[openamq-dev] OpenAMQ and Visual Studio 2005

Jörg Fischer joerg.fischer at biologie.uni-freiburg.de
Fri Feb 8 11:03:29 CET 2008


Hi Martin,

thank you for your advice, switching to 'Multi-threaded Debug' works!
Unfortunately I didn't succeed in building OpenAMQ with VS 2005, instead 
I had to use VS 2003.
I hope this is a further potential source of problems. Anyway, you saved 
the day of a C++-Newbie.

Thanks,

Jörg

Martin Sustrik schrieb:
> Hi Jorg,
>
> The reason why we are not supporting VS2005 is that each version of MSVC 
> has different way of defining projects and writing a build system to 
> support all of them is just too tedious.
>
> Therefore, if you manage to build OpenAMQ with MSVC2005, it would be 
> nice if you can contribute the project files so that other people can 
> use it.
>
> However, as far as I understand you've managed to build OpenAMQ project 
> itself and the problem you have concerns only the client application you 
> are trying to build. This shouldn't be a problem. The problem you are 
> experiencing stems from the fact that you are trying to link your app 
> with DLL version of CRT rather than with static CRT. Note that OpenAMQ 
> does not support DLL CRT.
>
> Therefore, try to use "Multi-threaded debug" runtime library rather than 
> "Multi-threaded debug DLL".
>
> Martin
>
> Jörg Fischer wrote:
>   
>> Hi,
>>
>> I've got some question concerning the compatibility of OpenAMQ and 
>> Visual Studio 2005.
>> On your web page you state, that 'Note that Visual Studio 2005 
>> (including the Express Edition)
>> is not currently supported.' Can anyone say when VS 2005 will be supported?
>>
>> Right now I'm trying to integrate OpenAMQ in my VS 2005 project despite 
>> it's not
>> supported. Yes, it's urgent ;) I even get quite far, since sending and 
>> receiving works.
>> The problem seems to be located in the compiler- and linker-settings. 
>> Based on the
>> wiki tutorial 'Building client applications using MSVC on Windows' I 
>> created a project.
>> It works with the following settings:
>>  * Use MFC                    = Use Standard Windows Libraries
>>  * Runtime Library           = Multi-threaded (Debug) DLL
>>  * Ignore Specific Library = MSVCRTD.LIB
>>
>> But since MSVCRTD.LIB is ignored, some functions from this library
>> are not available, e. g. adding the following code:
>>    #include <assert.h>
>>    // ...
>>    assert(pName);
>> results in the following error:
>>    error LNK2001: unresolved external symbol __imp___wassert
>>
>> The other option would be not to ignore MSVCRTD.LIB. This yields
>> the more errors: 
>>    LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR80D.dll)
>> I've copied the complete list of these errors at the end of this mail.
>> My question now is, whether I've misconfigured the compiler- and linker-
>> settings or is this the reason why OpenAMQ doesn't support VS 2005.
>>
>> Thanks,
>>
>> Jörg Fischer
>>
>>
>> --------------------------------------------------------------------------
>> 2>Linking...
>> 2>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __malloc_dbg already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _realloc already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _free already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __free_dbg already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)
>> 2>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
>> 2>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
>> 2>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
>> 2>LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(winxfltr.obj) : error LNK2005: ___CppXcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(winsig.obj) : error LNK2005: _signal already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(winsig.obj) : error LNK2005: _raise already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encoded_null already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(sprintf.obj) : error LNK2005: _sprintf already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(vsprintf.obj) : error LNK2005: _vsprintf already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(stricmp.obj) : error LNK2005: __stricmp already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(printf.obj) : error LNK2005: _printf already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(tolower.obj) : error LNK2005: _tolower already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>LIBCMTD.lib(strnicmp.obj) : error LNK2005: __strnicmp already defined in MSVCRTD.lib(MSVCR80D.dll)
>> 2>   Creating library D:\bmi\Debug\communication.lib and object D:\bmi\Debug\communication.exp
>> 2>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
>> 2>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
>> 2>LIBCMTD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
>>
>>
>> _______________________________________________
>> openamq-dev mailing list
>> openamq-dev at lists.openamq.org
>> http://lists.openamq.org/mailman/listinfo/openamq-dev
>>   
>>     
>
> _______________________________________________
> openamq-dev mailing list
> openamq-dev at lists.openamq.org
> http://lists.openamq.org/mailman/listinfo/openamq-dev
>   


-- 

Dipl.-Inf. Joerg Fischer

e-mail: joerg.fischer at biologie.uni-freiburg.de
Tel: +49-761-203-2910

Institute for Biology I        
Albert-Ludwigs University

Hauptstraße 1
79104 Freiburg
Germany 



More information about the openamq-dev mailing list