2012-05-22 164 views
11

我有一个Qt项目并希望使用包含“afxstr.h”的外部库。 问题是,每当我链接到lib和包括它们的头编译后,我得到一个错误:将MFC支持添加到Qt项目

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

当然,我的项目是不是一个MFC项目,我不能代替,因为使用atlstr.h这不是我的图书馆。

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

我正在使用VS2010。

有问题的库是Interactive Brokers API

+0

这是一个开源,自由可用的库?如果是这样,有链接? – HostileFork

+0

交互式经纪人API。它是免费的,但不是开源的 –

+0

您是否尝试修改库的头文件,以便它们包含'atlstr.h'而不是'afxstr.h'?这两个头文件可能以'CString'的相同实现为目标。 –

回答

4

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

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

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

第一个包括必须

#include <afx.h> 

,你可以不包括在此之前WINDOWS.H。通常情况下,如果使用预编译头文件,这是stdafx.h中的第一个包含。除此之外,其他MFC头文件可以根据需要随意包含。

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

1

好,你已经知道这一点,只是使它更加清晰:

.pro文件中加入: 定义+ = IB_USE_STD_STRING

避免使用MFC的CString

相关问题