que tienen una serie de advertencias que estoy tratando de arreglar la hora de construir gdcm utilizando Visual Studio 10 (versión de 32 bits):¿Cómo puedo solucionar esta advertencia de enlace dll inconsistente vs10?
4>..\..\..\..\gdcm\Utilities\gdcmexpat\lib\xmlparse.c(647): warning C4273: 'XML_ParserCreate' : inconsistent dll linkage
4> d:\src\gdcm\gdcm\utilities\gdcmexpat\lib\expat.h(206) : see previous definition of 'XML_ParserCreate'
la función de llamada en sí parece:
XML_Parser XMLCALL
XML_ParserCreate(const XML_Char *encodingName)
{
return XML_ParserCreate_MM(encodingName, NULL, NULL);
}
donde
#define XMLCALL __cdecl
y
XMLPARSEAPI(XML_Parser)
XML_ParserCreate(const XML_Char *encoding);
donde
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
y
#define XMLIMPORT __declspec(dllimport)
Si estoy leyendo que correctamente, que significa que el enlace se __cdecl consistentemente a través derecha XMLCALL--? Porque, de ser así, ¿la advertencia es superflua o estoy malinterpretando esto?
Eso fue ... que dllimport debería haber sido un dllexport. – mmr
Guau, me perdí uno también con una variable que se exporta. En el encabezado, tenía algo así como 'COMMON_API extern const std :: string someStr;' mientras que en el archivo cpp tenía 'const std :: string someStr (" Background ");' al que le faltaba el especificador de exportación/importación. La macro API cambia los equipos en función de si el proyecto tiene una macro definida diciéndole que es una compilación dll o no. Tendré que vigilar este. – jxramos