blitzpp / blitz

Blitz++ Multi-Dimensional Array Library for C++
https://github.com/blitzpp/blitz/wiki
Other
402 stars 83 forks source link

Manage export for static library under Windows #161

Closed HerveAncher closed 4 years ago

HerveAncher commented 4 years ago

Under Windows, with previous code, all objects were exported with the flag __declspec(dllexport), and imported with __declspec(dllimport).

It works well when you link with dynamic library (and its import library) but failed when you try to link with the new static library.

To fix that, I added a new flag named BZ_STATIC_LIB which is defined during static library compilation (see CMakeLists.txt). This flag need to be also be added in third party software when user want to link with static library under Windows, for example in CXXFLAGS: -DBZ_STATIC_LIB

This PR do not impact the dynamic linking, which is the standard behavior.

It will be possible to add the flag in CMake config file to automatize the definition of it. Also in pkg-config generated file.

HerveAncher commented 4 years ago

I have just push a commit allow to export static flags for Windows and MinGW

slayoo commented 4 years ago

Thank you!

slayoo commented 4 years ago

Could you please comment if this is in anyway relevant to an apparently related issue: https://github.com/blitzpp/blitz/issues/147