2012-05-22 17 views
11

Tengo un proyecto de Qt y me gustaría usar una biblioteca externa que incluya "afxstr.h". El problema es que cada vez que puedo compilar después de ligarse a la lib e incluyendo su cabecera, me sale un error:Agregar soporte de MFC a un proyecto de Qt

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

Por supuesto, mi proyecto no es un proyecto MFC y no puedo utilizar en su lugar porque atlstr.h no es mi biblioteca

¡Estoy buscando una solución rápida!

Estoy usando VS2010.

La lib en cuestión es Interactive Brokers API.

+0

¿Es esta una fuente abierta y libremente biblioteca disponible? Si es así, ¿tienes un enlace? – HostileFork

+0

API de corredores interactivos. Es gratis, pero no es de origen abierto –

+0

¿Intentó modificar los archivos de encabezado de la biblioteca para que incluyan 'atlstr.h' en lugar de' afxstr.h'? Estos dos archivos de cabecera pueden tener como objetivo la misma implementación de 'CString'. –

Respuesta

4

La configuración respectiva es Propiedades de configuración/General, Uso de MFC.

La opción del compilador implícita de eso es/D "_AFXDLL" cuando se usa MFC en una DLL. En cuanto a las opciones del vinculador, curiosamente se eliminan los enlaces explícitos de las bibliotecas de importación de Windows (como kernel32.lib).

Visual Studio parece encontrar las bibliotecas respectivas automáticamente. Sin embargo, la opción "Uso de MFC" se almacena con el archivo de proyecto, por lo que no puedo decir cómo se traduciría a un script de compilación personalizado.

El primer incluyen debe ser

#include <afx.h> 

y no se puede incluir windows.h antes de eso. Normalmente, esa es la primera inclusión en stdafx.h si usa encabezados precompilados. Aparte de eso, otros encabezados MFC se pueden incluir libremente según sea necesario.

Dudo que este sea el final de la historia, obtener MFC para jugar es doloroso y, a veces, es más fácil darse por vencido :) Un google rápido revela que hay soluciones, pero implican código adicional y son bastante antiguo.

1

bien, ya ha saber esto, simplemente hacerlo más claro:

archivo .pro add: define + = IB_USE_STD_STRING

eviten el uso de MFC CString

Cuestiones relacionadas