Visual C++ 2008不能包含自己的静态库
问题描述:
我有两个项目:一个静态库和一个DLL将静态链接到此静态库。让我们假设:Visual C++ 2008不能包含自己的静态库
foo.lib (static library)
bar.dll (links against foo.lib)
foo.lib具有以下功能:
fooFile(...);
我成功地构建了静态lib和DUMPBIN /符号告诉我,该功能是存在的(尽管有一些名字改编)。当试图将其链接到bar.dll项目时,出现以下错误:
error LNK2019: unresolved external symbol _fooFile referenced in function _fooSomething
这是为什么会失败?相同的代码在Linux环境中没有问题。
答
bar.dll项目被编译为C,或者包含在extern "C" {...}
下的foo.lib的头文件。基本上,一个项目将函数导出为具有C++链接,而另一个项目则尝试使用C链接导入它。
我忘了Visual C++使用C++作为默认值:) – ivarec