我有一个 Qt 项目,想使用一个包含“afxstr.h”的外部库。问题是,每当我在链接到 lib 并包含它们的头文件后进行编译时,都会出现错误:
#error afxstr.h can only be used in MFC projects. Use atlstr.h
当然,我的项目不是 MFC 项目,我不能使用 atlstr.h 代替,因为它不是我的库。
我正在寻找一个快速的解决方案!
我正在使用VS2010。
有问题的库是Interactive Brokers API。
我有一个 Qt 项目,想使用一个包含“afxstr.h”的外部库。问题是,每当我在链接到 lib 并包含它们的头文件后进行编译时,都会出现错误:
#error afxstr.h can only be used in MFC projects. Use atlstr.h
当然,我的项目不是 MFC 项目,我不能使用 atlstr.h 代替,因为它不是我的库。
我正在寻找一个快速的解决方案!
我正在使用VS2010。
有问题的库是Interactive Brokers API。
相应的设置是配置属性/常规、MFC 的使用。
在 DLL 中使用 MFC 时,其中隐含的编译器选项是 /D "_AFXDLL"。至于链接器选项,奇怪的是,Windows 导入库(例如 kernel32.lib)的显式链接被删除了。
Visual Studio 似乎会自动找到相应的库。但是,“使用 MFC”选项与项目文件一起存储,所以我不能说它将如何转换为自定义构建脚本。
第一个包含必须是
#include <afx.h>
并且您不能在此之前包含 windows.h。通常,如果您使用预编译的头文件,这是 stdafx.h 中的第一个包含。除此之外,可以根据需要自由包含其他 MFC 标头。
我怀疑这就是故事的结局,让 MFC 玩任何东西都是痛苦的,有时放弃更容易:) 快速谷歌显示有解决方案,但它们涉及额外的代码并且相当陈旧。
好吧,你已经知道了,只是说得更清楚:
.pro 文件添加:DEFINES += IB_USE_STD_STRING
避免使用 MFC CString