1

我有一个项目,我们希望将其从 Visual Studio 6 移植到 Visual Studio 2010。

该项目依赖于预编译的第 3 方 .LIB 文件。此第 3 方库仅包含 .H 头文件(无 .CPP 文件)

我刚刚对 Visual Studio 2010 解决方案进行了快速导入,并且在链接时遇到了很多错误!

其中一些错误是指第 3 方 .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)

如果没有重建 3rd 方库的资源,我在这里是否处于松散状态,或者这里是否还有其他事情发生?

先感谢您。

编辑:第 3 方 .lib 最初是在 Visual Studio 6.0 中编译的

4

2 回答 2

1

如果你有 VS6,你可以尝试在那里生成一个 DLL,链接到你拥有的那个 .lib 文件,并导出必要的符号。

然后,您可以在 VS 2010 项目中动态链接该 dll,而无需使用 .lib

于 2012-10-11T09:21:51.980 回答
0

您的第 3 方库依赖于从 VS2010 中删除的 VS6 的一些内部实现,因此通常您不能在没有源代码的情况下使用它,但使用它有一种棘手的方式。

通常这个实现函数在 VS6 中都是开源的,你可以看到它的实现并实现你自己的版本并链接它,如果简单的链接不能解决问题你应该将你的实现编译为一个单独的 DLL 并链接它!

于 2012-10-11T09:04:15.133 回答