[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: msvc*.dll versioning conflicts
- From: folays <folays@...>
- Date: 05 Aug 2008 16:28:29 +0200
David Manura <dm.lua@math2.org> writes:
> steve donovan writes:
> > On Mon, Aug 4, 2008 at 1:11 PM, Paul Moore wrote:
> > > It's up to you, I guess, but I find msvcr80/msvcr90 builds fraught
> > > with problems...
>
> Since the msvc*.dll issue is becoming a recurring topic, some notes/links are
> now collected here: http://lua-users.org/wiki/BuildingModules . Feel free to
> expand.
Okay, i didn't understood everything of this thread and i'm sorry if this is
out-of-topic, but i have had similar headaches with library conflicts in the
past. And execuse my terminology, i didn't used Visual Studio for a long time.
In the case that you use #pragma comment(lib, ...) to automatically have
library dependencies registers againt the thing that you build, then try
to NOT use that, don't be fooled: It's definitely NOT the same than
adding yourself the library in the project properties.
At least on VS .Net 2005. The last time i triggered the problem (which took
me 2-3 days to identify), was when i used the officialy-released WxWidgets
library (compiled under VS 2003), for a project of my own compiled with VS
.Net 2005, which raised error something like "MSVCR80.dll not found, [...]"
at runtime.
This problem whas that the #include of WxWidgets' headers automatically
register library dependencies by using #pragma comment(lib, ...). But again,
this is NOT the same than adding yourself the dependencies (Dependency
Walker would confirm that). So i resolved the problem by commenting out
WxWidget's #pragmas and adding myself the dependencies. I would bet on a
bug of #pragma comment(lib, ...).
Thanks to this blog which put me on the right track (event if i don't speak
German):
http://blog.m-ri.de/index.php/2007/03/20/manifest-hoelle-msvcr80dll-nicht-gefunden/
This issue with differents CRT is somewhat general. The last time i've seen
it was on a Protocol Buffers discussion on google groups. I've also seen it
by the past on lot of gamedev.net foruns' topics, and the problem was tricky,
because some people (which used #pragma) asked for help, and some others
people (which used project properties) answered "for me, it just works", just
because everyone assumed that the two methods were the same (which seems a
fine assumption), and it confuses everyone.
Either i didn't understood anything related to CRT's and i'm completly
wrong, OR there is a HUGE problem with #pragma, and i hope this thread will
help someone, for not necessarily Lua-related problems.
> Though it's quite preferable to use the same C runtime, in theory I see nothing
> incorrect with mixing libraries linked against different C runtimes provided
> some strong assurances are given from those libraries. Perhaps it's ideal,
> *when possible*, for a C extension DLL to dynamically link to no C run-time at
> all (i.e. /nodefaultlib /entry:... linker options in MSVC). It may be
> worthwhile for someone to clarify this all in practice.
--
folays