2012-05-22 4 views
11

У меня есть проект Qt и вы хотите использовать внешнюю библиотеку, которая включает в себя «afxstr.h». Проблемы заключается в том, что всякий раз, когда я компилирую после ссылки на библиотеки, и в том числе их заголовка, я получаю сообщение об ошибке:Добавление поддержки MFC в проект Qt

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

Конечно, мой проект не является проект MFC, и я не могу использовать atlstr.h вместо потому это не моя библиотека.

Я ищу быстрое решение!

Я использую VS2010.

The lib in question is Interactive Brokers API.

+0

Является ли это с открытым исходным кодом и свободно доступная библиотека? Если да, получила ссылку? – HostileFork

+0

Интерактивные брокеры API. Это бесплатно, но не открыто. –

+0

Попробовали ли вы изменить файлы заголовков библиотеки, чтобы они включали 'atlstr.h' вместо' afxstr.h'? Эти два файла заголовка могут ориентироваться на ту же реализацию 'CString'. –

ответ

4

Соответствующая настройка - Свойства конфигурации/Общие, Использование MFC.

Опция компилятора подразумевает, что это/D "_AFXDLL" при использовании MFC в DLL. Что касается параметров компоновщика, то с любопытством удаляется явное связывание библиотек импорта Windows (таких как kernel32.lib).

Visual Studio, похоже, автоматически находит соответствующие библиотеки. Тем не менее, опция «Использование MFC» хранится в файле проекта, поэтому я не могу сказать, как она будет переводиться в сценарий пользовательской сборки.

К первым относятся должны быть

#include <afx.h> 

и вы не можете включить windows.h до этого. Как правило, это первое включение в stdafx.h, если вы используете предварительно скомпилированные заголовки. Помимо этого, другие заголовки MFC могут быть включены свободно по мере необходимости.

Я сомневаюсь, что это конец истории, когда MFC играет с чем угодно, это больно, а иногда легче сдаться :) Быстрый google показывает, что есть решения, но они включают дополнительный код и, скорее, старый.

1

ну, вы уже знаете это, просто сделать его более ясным:

.pro файл оных: DEFINES + = IB_USE_STD_STRING

избежать использования MFC CString