我打开了一个旧的工作区,它是一个libray及其测试工具。它过去工作得很好,但现在没有,老版本的代码也不能使用相同的错误。我尝试重新创建项目,并导致相同的错误。在项目设置中没有任何东西出现乱码,并且生成的代码在主应用程序中可用。链接问题(VC6)
我已经剥去了大部分文件,并把它归结为最低限度生成错误。不幸的是,我不能发布项目,因为这是用于生产代码。
LNK2001链接器错误我通常意味着我已经离开了一个库或忘记实现一个虚拟功能。然而,这是标准模板库的一部分,并且是一个标题。
被列为具有IOCompletionPort.obj问题实际上不直接使用std::string
,但并调用的类,它的代码:Comms::Exception
接受std::string
和GetLastError
或WSAGetLastError
值。
错误(GetMessage
)中提到的函数是实现的,但它是一个虚函数,所以其他类可以在需要时覆盖它。然而,它似乎是编译器使它成为一个Ansi版本,但我无法找到设置中的任何选项来控制它。我怀疑这可能是问题,但由于图书馆的选择方式很少,我无法确定。但是这两个项目在编译器选项中指定_MBCS。
--------------------配置:TestComms - Win32 Debug ------------------ - 链接... Comms.lib(IOCompletionPort.obj) :错误LNK2001:无法解析的外部符号“公共:虚拟类 std :: basic_string,类 std :: allocator> __thiscall Comms :: Exception :: GetMessageA void?const“(?GetMessageA @ Exception @ Comms @@ UBE?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ XZ) Debug/TestComms .exe:致命错误LNK1120:1个未解析的外部程序 执行link.exe时出错。
TestComms.exe - 2个错误,0个警告
有什么建议?我已经失去了大部分的时间,也不想在下午的大部分时间里失去。