[antlr-interest] Re: More VC++ 6 Confusion (MFC libs)

isabellemus meta.logix at pandora.be
Sun Dec 30 09:05:41 PST 2001


Hi,

Try using the static antlr library, works for me (use the LIB project 
in MSCV6-dll directory).

I have a different problem with using the dll : I cannot get MSVC to 
generate an import library (don't have a .def file), and cannot find 
any export declarations in the source. 

Isabelle


--- In antlr-interest at y..., "kemmerzehl" <malitrait at s...> wrote:
> Hi,
>   I do hate to add to your list of confused VC++ user messages but 
> I've followed the steps from your existing discussions/literature 
and 
> I'm still having some problems. It appears this particular issue 
has 
> not yet been addressed although it seems like it would be a 
> common problem so I do apologise if I've missed something.
>   Anyway, here's the problem. Quite simply, the ANTLR and MFC libs 
> just wont work for me together - I get link errors. I've built my 
> ANTLR lib files according to JSRS's 'How To', and by themselves 
they 
> work well. If I use VC++ to create a 'Win32 Console Application' 
and 
> do NOT include MFC support, then add the generated calc example 
files 
> and add the ANTLR library, everything compiles links and runs fine. 
> If, however, I do the same thing only I DO include MFC support (and 
> remembering to take off the /Yu"stdafx.h" flag), I get the 
following 
> link errors:
> 
> LIBC.lib(cfout.obj) : error LNK2005: ___dtold already defined in 
> libcmt.lib(cfout.obj)
> LIBC.lib(crt0dat.obj) : error LNK2005: __cinit already defined in 
> libcmt.lib(crt0dat.obj)
> LIBC.lib(crt0dat.obj) : error LNK2005: _exit already defined in 
> libcmt.lib(crt0dat.obj)
> LIBC.lib(crt0dat.obj) : error LNK2005: __exit already defined in 
> libcmt.lib(crt0dat.obj)
> LIBC.lib(crt0dat.obj) : error LNK2005: __cexit already defined in 
> libcmt.lib(crt0dat.obj)
> ..etc.
> 
>   One rather odd thing is that I can get the _debug_ build to work
> (for the calc example) if I link statically to MFC and use the /MT 
> flag instead of /MTd(default for debug builds). These flags 
represent 
> the "Multithreaded" and "Debug Multithreaded" runtime libraries, 
> available in the "Code Generation" dropdown section of the "C++" 
tab 
> in Project -> Settings. This however does not fix the problem for 
the 
> release build, I even tried using JSRS's debug version of the ANTLR 
> library with the release build (using /MT) and I still got link 
> errors. Also, I could not get rid of the link errors at all for the 
> project im working on (with either build).
>   All of this is purely trial and error for me as I've never had to 
> deal with third-party libraries before. I hope some of the info 
I've 
> provided can be of use and that somebody out there has experienced 
> this linking problem before and knows how to fix it. Either way, 
I'm 
> going to keep ripping my hair out trying to fix it, if I find a 
> solution I'll post it.
> 
> Thanks,
> -Kemmerzehl


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 



More information about the antlr-interest mailing list