2012-05-22 161 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

相關問題