如何在visual studio中使用共享库

时间:2015-02-15 16:28:19

标签: c++ linker shared-libraries

我在使用visual studio时遇到了麻烦,我不知道还应该尝试什么。

我在共享库(dll / windows)中捆绑了一些c ++函数,并尝试在Visual Studio中包含该库。

问题是visual studio总是会输出以下错误:

  

错误LNK2019未解析的外部符号“”__ declspec(dllimport)void __cdecl CppFunc(void)“(__ imp_?CppFunc @@ YAXXZ)”in function“main”

因为我认为这是我的错,所以我尝试了以下示例: Building a Dynamic-Link Library using C++ MinGW

如果我使用控制台编译该示例,一切正常。另一方面,当我尝试在visual studio中编译时,我收到与我的库相同的错误。

这就是我试图让它发挥作用的地方:

  • 创建了一个包含目录并复制了此目录中的所有标题
  • 创建了一个lib目录,并将.lib和.dll文件复制到此目录
  • 使用cmake和以下CMakeLists.txt-File生成visual studio项目

    cmake_minimum_required (VERSION 3.1)
    project (Tutorial)
    
    include_directories(include)
    
    add_library(lib SHARED IMPORTED)
    set_property(TARGET lib PROPERTY IMPORTED_LOCATION  ${PROJECT_SOURCE_DIR}/lib/my_dll.dll)
    set_property(TARGET lib PROPERTY IMPORTED_IMPLIB ${PROJECT_SOURCE_DIR}/lib/libmy_dll.lib)
    
    file(GLOB srcfiles
        "src/*.cpp"
    )
    
    add_executable(Tutorial ${srcfiles})
    target_link_libraries(Tutorial lib)
    

要生成.dll和.lib文件,我使用以下命令:

g++ -c -DBUILD_MY_DLL my_dll.cpp
g++ -shared -o my_dll.dll my_dll.o -Wl,--subsystem,windows,--out-implib,libmy_dll.lib

如果有人可以帮助我,我会非常高兴。

提前致谢。

0 个答案:

没有答案