[CMake] Compile shared library and call it's functions

Jakob van Bethlehem jsvanbethlehem at gmail.com
Tue Mar 8 10:23:20 EST 2016


Hej,

A short side-question - you mentioned you are compiling a DLL, yet you
mention also you are on OSX. I'd expect a .dylib on OSX?
Anywaysz, I think Andreas already answered your question quite clearly: you
probably misinterpret the output of nm, since your CMakeLists.txt file
looks exactly as it should.

Sincerely,
Jakob



On Mon, Mar 7, 2016 at 9:29 PM, Ivan <ivan at sleepyiora.pw> wrote:

> Hello!
> I hope someone could finally help me. I spent about two days to find
> solution for my problem, but with no luck.
>
> Here is my problem:
>
> I want to create a shared library (dll on Windows, .so on Linux, .dylib on
> OS X) that contains some functions. This library should export only these
> functions and nothing else. I guarantee that these function are pure C
> functions, so no C++ STL is needed to call them.
>
> Then I want to create an application that call functions from the shared
> library mentioned above. I mean that the application should not have these
> functions inside. I want OS linker to link the application with the library
> at runtime, when it initializes the application. I know, how to do this on
> Windows with Visual Studio: create DLL project, write functions and
> compile, then there will be two files: .dll and .lib, link the .lib file
> with the application and at runtime Windows will find the .dll. But how can
> I do so with CMake?
>
> Here is my CMakeLists.txt:
>
> cmake_minimum_required(VERSION 3.3)
> project(untitled19)
>
> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
>
> set(LIBRARY_SRC library.cpp)
>
> add_library(libra SHARED ${LIBRARY_SRC})
>
> set(SOURCE_FILES main.cpp)
> add_executable(untitled19 ${SOURCE_FILES})
> target_link_libraries(untitled19 libra)
>
>
> This works and both library and executable are compiled. Unfortunately library seems to be linked into the executable: ‘nm’ command shows that the executable itself exports needed functions!
>
> I think there should be a solution for this, but I cannot find it. Can anyone help me?
>
> For more clarification: I’m using OS X El Capitan.
>
> ——
>
> Best regards, Ivan.
>
>
>
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160308/95b2a159/attachment-0001.html>


More information about the CMake mailing list