11

我有一个 Qt 项目,想使用一个包含“afxstr.h”的外部库。问题是,每当我在链接到 lib 并包含它们的头文件后进行编译时,都会出现错误:

#error afxstr.h can only be used in MFC projects.  Use atlstr.h

当然,我的项目不是 MFC 项目,我不能使用 atlstr.h 代替,因为它不是我的库。

我正在寻找一个快速的解决方案!

我正在使用VS2010。

有问题的库是Interactive Brokers API

4

2 回答 2

4

相应的设置是配置属性/常规、MFC 的使用。

在 DLL 中使用 MFC 时,其中隐含的编译器选项是 /D "_AFXDLL"。至于链接器选项,奇怪的是,Windows 导入库(例如 kernel32.lib)的显式链接被删除了。

Visual Studio 似乎会自动找到相应的库。但是,“使用 MFC”选项与项目文件一起存储,所以我不能说它将如何转换为自定义构建脚本。

第一个包含必须是

#include <afx.h>

并且您不能在此之前包含 windows.h。通常,如果您使用预编译的头文件,这是 stdafx.h 中的第一个包含。除此之外,可以根据需要自由包含其他 MFC 标头。

我怀疑这就是故事的结局,让 MFC 玩任何东西都是痛苦的,有时放弃更容易:) 快速谷歌显示有解决方案,但它们涉及额外的代码并且相当陈旧。

于 2012-06-07T09:50:03.340 回答
1

好吧,你已经知道了,只是说得更清楚:

.pro 文件添加:DEFINES += IB_USE_STD_STRING

避免使用 MFC CString

于 2012-10-16T10:02:13.190 回答