[CMake] Creating a dynamic library with a static library hidden inside

Michael Leong michael at voltage.com
Tue Jun 16 22:25:36 EDT 2009


Thanks for the reply, Andreas.



> > > >

> > > > 2: The dynamic library's internal openssl functions should not be

> > > > externally visible.

> > >

> > > Not sure if this is possible. If the symbols are in there, someone with

> > > dumpbin or some other tool will probably be able to find them. What are

> > > you trying to do? Why is this requirement important? Also, are there any

> > > legal/licensing ramifications of doing this?

> > >

> > > What problems are you running into? Can't compile dynlib? Can't link an

> > > exe with dynlib?

> >

> > When I run the code, I get a dynamic library named dynlib out, and I

> > can use it to link up an executable that uses the functions in there

> > and it works fine, but I need to link in the openssl libraries as

> > well. The executable doesn't link happily if it's not pointed to

> > dynlib and the two static .lib openssl files.

>

> Can you post the exact errors? Or maybe even a small complete sample

> project that reproduces this?



When I try to link dynlib.dll into the executable, it complains about a whole load of unresolved external symbols. I recognize them; they're openssl symbols, and the problem goes away and links and runs just fine if I add libeay32.lib and ssleay32.lib as dependencies of the executable.



>

> > I've checked the legal and licensing issues, and it's ok for this

> > situation. What I'm trying to do is make sure the openssl that my

> > library uses is not going to conflict with anyone else's openssl

> > already installed on the system. I don't want someone to link my

> > library, and then call an openssl function and get the openssl I'm

> > using. That's just in case they have a different one.

>

> So basically you want your dynamic lib not export any openssl

> symbols, that should just work as long as your dynamic libs own exported

> symbols don't reference anything from openssl.



Looking around the cmake wiki and all sure made me think it would work great, but that's unfortunately not what I'm experiencing and I'm a little confused. And I'm not sure what you meant by that last sentence. The symbols I export do call openssl functions, but that's the reason I want to have openssl inside the dll I'm making; so it can be a standalone library without having to deal with hassles of users having different versions of openssl floating around.



Thanks again.

-Michael


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090616/b0fa829c/attachment.htm>


More information about the CMake mailing list