繁体   English   中英

在C ++中,是否可以链接到使用Visual Studio早期版本编译的.lib文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM