![](/img/trans.png)
[英]Dynamic link library does not generate a .lib file when compiled (Visual Studio C++ Express)
[英]In C++ is it possible to link to a .lib file that was compiled with earlier version of Visual Studio?
我有一个项目,我们希望将其从Visual Studio 6移植到Visual Studio 2010。
该项目依赖于预编译的第3方.LIB文件。 该第三方库仅包含.H头文件(无.CPP文件)
我刚刚对Visual Studio 2010解决方案做了一个快速尝试,在链接时遇到了很多错误!
这些错误中的某些错误引用了第三方.lib文件“ ServerToolkitRuntimeLIB.LIB”
这是我构建输出的小片段:
1>ServerToolkitRuntimeLIB.LIB(SerialIO.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCConversions.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCMemoryAS.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCAddressSpace.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
1>ServerToolkitRuntimeLIB.LIB(OPCServer.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xlen(void)" (?_Xlen@std@@YAXXZ)
我是在这里松了一口气,没有重建第3方库的资源,还是这里有其他事情?
先感谢您。
编辑:第三方.lib最初是在Visual Studio 6.0中编译的
如果您拥有VS6,则可以尝试在其中生成一个DLL,链接到您拥有的.lib文件,并导出必要的符号。
然后,您可以在VS 2010项目中动态链接该dll,而无需使用.lib
您的第3方库依赖于从VS2010中删除的VS6的一些内部实现,因此,通常在没有源代码的情况下您无法使用它,但是有一种棘手的使用方式。
通常,此实现函数在VS6中都是开源的,您可以查看其实现并实现自己的版本并针对它进行链接,如果简单链接不能解决问题,则应将实现编译为单独的DLL并针对它进行链接!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.