在程序中使用了一个lib,当文件名后缀为c的时候能够成功编译,
改成cpp则会error LNK2001: unresolved external symbol1)如何解决呢?顺带就暴露出以前程序的问题:再问2)当project中有多个文件的时候应该如何规范地声明、定义变量和函数呢?我现在只是将所有的全局变量和函数放在一个头文件里面,然后在project的link选项里面 /FORCE:MULTIPLE ,这样会出来很多warning;而且3)没有办法将C后缀的文件加入到project里面了。30分一问,不够请讲,谢谢谢谢!!!

解决方案 »

  1.   

    你用到的lib应该是ATL类库吧,lib的IID定义在name_i.c的文件中,不用加入工程,放到工程的当前目录就行
      

  2.   

    c和c++编译时的名称转换规则不一样
    像你这样的情况可以在cpp文件中把要使用的函数声明为
    extern "C" 函数声明
      

  3.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_langref_extern.asp
      

  4.   

    原因就如afc所说
    在cpp文件内容前后加,extern "C"
    {
    ...
    }
      

  5.   

    谢谢上面两位,结贴前再问一下,
    这个和平台的sdk有关吗?我这样修改后在VC6和EVC下某些SDK可以,但是其他设置会报错。是还有什么地方需要设置吗?还是这个lib在unicode平台下无法编译的原因?
    谢谢!