Pierre Malarme schrieb:
hi,
i've taken your advice on the __declspec stuff and test it on a hello world project. i do have a .lib now but with a warning
"
hello.cxx

..\..\CMakeExample\Hello\hello.cxx(5) : warning C4273: 'Hello::Print' : inconsistent dll linkage

h:\workspace\cmakeexample\cmakeexample\hello\hello.h(18) : see previous definition of 'Print'

is that normal?

This means that you still have something wrong with your __declspec definitions or the way that you include the library into other projects.

SPCK_BASE_EXPORT must be __declspec(dllexport) when you build the shared library itself SPCK_BASE_EXPORT must be __declspec(dllimport) when you import headers from that library into other projects.

This is handled correctly the way Martin has posted it.

For this to work, Base_EXPORTS must be set only when you build the shared library, and in must *not* be set in all other projects that link against the library. So have a look at where you define Base_EXPORTS, e.g. by adding ADD_DEFINITIONS(-DBase_Exports) in your CMakeLists.txt or by #define Base_EXPORTS inside a header file. CMake usually adds this automatically for DLL targets, so it should be right when you build the DLL. Take care that it is not set in any projects that use the library and that you don't define it in any header file of the library.

Hope this helps...

Stefan

_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to