开发者社区> 问答> 正文

链接问题(VC6)

我打开了一个旧的工作空间,它是一个libray及其测试工具。它曾经可以正常工作,但现在不行,并且旧版本的代码也无法工作,并且存在相同的错误。我尝试重新创建项目,这也会导致相同的错误。在项目设置中似乎没有任何异常,并且生成的代码在主应用程序中有效。

我删除了大多数文件,并将其降至最低限度以生成错误。不幸的是,我无法发布该项目,因为它已在生产代码中使用。

我收到的LNK2001链接器错误通常表示我放弃了一个库或忘记了实现虚函数。但是,这是标准模板库的一部分-也是该模板的标头。

在IOCompletionPort.obj中被列出有问题的代码实际上并没有std::string直接使用,但是确实调用了一个类:Comms::Exception接受a std::string和GetLastErroror 的值WSAGetLastError。

错误(GetMessage)中提到的函数已实现,但它是一个虚函数,因此如果需要,其他类可以覆盖它。但是,似乎编译器已将其作为Ansi版本进行,但我在控制该设置的设置中找不到任何选项。我怀疑这可能是问题所在,但是由于图书馆的选择方式很少,所以我无法确定。但是,两个项目都在编译器选项中指定_MBCS。

展开
收起
游客ufivfoddcd53c 2020-01-03 16:35:34 896 0
1 条回答
写回答
取消 提交回答
  • 这是Microsoft处理ANSI与Uni​​code API的方式的普遍问题。由于它们都是(或几乎全部)通过为函数名称定义解析为函数名称的“ A”或“ W”版本的宏来完成的,因此您不能在名称空间/类/结构/枚举/中安全地拥有标识符与Windows API名称匹配的函数。

    Windows.h宏在所有其他命名空间上运行不便。

    2020-01-03 16:35:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载