Domanda

Ho un progetto QT e vorrei utilizzare una libreria esterna che include "AFXSTR.H". Il problema è che ogni volta che compilo dopo il collegamento alla lib e compresa la loro intestazione, ottengo un errore:

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

Certo, il mio progetto non è un progetto MFC e non posso usare ATLSTR.H invece perché non è la mia biblioteca.

Sto cercando una soluzione rapida!

Sto usando VS2010.

La lib in questione è il Interactive Brokers API .

È stato utile?

Soluzione

La rispettiva impostazione è proprietà di configurazione / Generale, uso di MFC.

L'opzione Compilatore implicata da quella IS / D "_AFXDLL" quando si utilizza MFC in una DLL. Per quanto riguarda le opzioni del linker, curiosamente il collegamento esplicito delle librerie di importazione di Windows (come kernel32.lib) vengono rimosse.

Visual Studio sembra trovare automaticamente le rispettive librerie.Tuttavia, l'opzione "Uso di MFC" è memorizzato con il file del progetto, quindi non posso dire come si traduce in uno script di build personalizzato.

Il primo incluso deve essere

#include <afx.h>
.

e non puoi includere Windows.h prima di questo.Tipicamente, questo è il primo incluso in stdafx.h se usi intestazioni precompilate.A parte questo, altre intestazioni MFC possono essere incluse liberamente come necessario.

Dubito che questa sia la fine della storia, ottenere MFC per giocare con qualsiasi cosa sia dolorosa, ea volte è più facile arrendersi :) Un rapido Google rivela che ci sono soluzioni, ma coinvolgono un codice aggiuntivo e sono piuttosto vecchi.

Altri suggerimenti

Beh, lo sai già, rendilo più chiaro:

.pro file Aggiungi: Definisce += ib_use_std_string

Evitare Utilizzare MFC CString

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top