Hi there, While trying to compile my project in shared libs I realized it was not compiling any more with the free C++ toolkit 2003. Looking at Windows-cl.cmake the only difference I can see is that each MD flags was changed to a MT. So I decided to give it a try with the VCExpress/Nmake one, I choose Release and change MD into MT, and again my lib does not compile in shared lib mode ON. Is there something I am missing here ? Reading the definition of the flags MT I do not see why I should not be able to link to shared lib :
http://msdn2.microsoft.com/en-us/library/2kzt1wy3(VS.71).aspx As a side note pure-C executable seems to go fine, the real problem only occurs with C++ symbols duplicated. Ref: Linking CXX executable ..\..\..\..\bin\gdcmCommonTests.exe gdcmCommon.lib(gdcmCommon.dll) : error LNK2005: "public: int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::compare(char const *)const " ([EMAIL PROTECTED] [EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]) already defined in TestFilename.obj gdcmCommon.lib(gdcmCommon.dll) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator +=(char)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@V? [EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@Z) already defined in TestFilename.obj gdcmCommon.lib(gdcmCommon.dll) : error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::max_size(void)const " ([EMAIL PROTECTED] [EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@QBEIXZ) already defined in TestDirectory.obj gdcmCommon.lib(gdcmCommon.dll) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::erase(unsigned int,unsigned int)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@std@@V? [EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@Z) already defined in TestByteSwap.obj TestString.obj : error LNK2019: unresolved external symbol "public: static unsigned int const std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::npos" ([EMAIL PROTECTED] [EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@2IB) referenced in function "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::getline<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_istream<char,struct std::char_traits<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,char)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@V? [EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED] [EMAIL PROTECTED]@std@@@[EMAIL PROTECTED]@[EMAIL PROTECTED] [EMAIL PROTECTED]@std@@[EMAIL PROTECTED]@2@@[EMAIL PROTECTED]@Z) ..\..\..\..\bin\gdcmCommonTests.exe : fatal error LNK1120: 1 unresolved externals And the same issue with nmake/vs2005/MT: Microsoft (R) Program Maintenance Utility Version 8.00.50727.762 Copyright (C) Microsoft Corporation. Tous droits r .. Linking CXX executable ..\bin\gdcmconv.exe libcpmt.lib(cerr.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(cerr.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(cerr.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@@Z) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(cerr.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@Z) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(locale0.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(locale0.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@Z) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(locale0.obj) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator=(char const *)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@Z) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(string.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@@Z) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(string.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) libcpmt.lib(string.obj) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@Z) déjà défini(e) dans gdcmMSFF.lib(gdcmMSFF.dll) ..\bin\gdcmconv.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés NMAKE : fatal error U1077: 'C:\PROGRA~1\MID05A~1\VC\bin\cl.exe' : code retour '0x2' Stop. NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe"' : code retour '0x2' Stop. NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe"' : code retour '0x2' Stop. Thanks ! -- Mathieu _______________________________________________ CMake mailing list [email protected] http://www.cmake.org/mailman/listinfo/cmake
