Question

J'ai un projet QT et j'aimerais utiliser une bibliothèque externe qui inclut "AFXSTR.H". Le problème est que chaque fois que je compile après avoir lié à la libère et y compris leur en-tête, je reçois une erreur:

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

Bien sûr, mon projet n'est pas un projet MFC et je ne peux pas utiliser Atlstr.h à la place parce que ce n'est pas ma bibliothèque.

Je recherche une solution rapide!

J'utilise VS2010.

La LIB en question est le API de courtiers interactifs .

Était-ce utile?

La solution

Le paramètre correspondant est la configuration Propriétés / Généralités, Utilisation de MFC.

L'option compilateur implique de celui-ci est / D "_afxdll" lors de l'utilisation de MFC dans une DLL. En ce qui concerne les options de liaison, curieusement la liaison explicite des bibliothèques d'importation Windows (telles que Kernel32.Lib) est supprimée.

Visual Studio semble trouver les bibliothèques respectives automatiquement.Cependant, l'option "Utilisation de MFC" est stockée avec le fichier de projet, donc je ne peux donc pas dire comment cela se traduirait par un script de construction personnalisé.

La première inclusion doit être

#include <afx.h>

Et vous ne pouvez pas inclure Windows.h avant cela.Typiquement, c'est la première incluse dans STDAFX.H Si vous utilisez des en-têtes précompilés.Autre que cela, d'autres en-têtes MFC peuvent être inclus librement au besoin.

Je doute que c'est la fin de l'histoire, que MFC joue avec tout ce qui est douloureux, et il est parfois plus facile d'abandonner :) Un rapide Google révèle qu'il y a des solutions, mais ils impliquent un code supplémentaire et sont plutôt vieilles.

Autres conseils

Eh bien, vous le savez déjà, rendez-vous simplement plus clair:

fichier .pro Ajouter: Définit += ib_use_std_string

Évitez d'utiliser MFC CString

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top