小编For*_*tor的帖子

如何在 CMake 中使用动态链接库?

我有简单的程序如下:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)

project(test LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

LINK_DIRECTORIES(${PROJECT_SOURCE_DIR})

add_executable(test main.cpp)
target_include_directories(test PRIVATE ${PROJECT_SOURCE_DIR})    
target_link_libraries(test PRIVATE power.dll)
Run Code Online (Sandbox Code Playgroud)

主.cpp:

#include <iostream>
#include "power.h"

using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    power(4.);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

功率.h:

#ifndef POWER_H
#define POWER_H

double power(double number) noexcept;

#endif // POWER_H
Run Code Online (Sandbox Code Playgroud)

的实现power.h在一个名为 .dll 的文件中power.dll。如果我用 MinGW 7.3.0 X64 编译这个项目说:

error: undefined reference to `power(double)'
Run Code Online (Sandbox Code Playgroud)

如果我用 MSVC 2017 X64 编译它说:

error: LNK1104: cannot open file 'power.lib' …
Run Code Online (Sandbox Code Playgroud)

c++ windows cmake dynamic-linking

8
推荐指数
1
解决办法
9104
查看次数

标签 统计

c++ ×1

cmake ×1

dynamic-linking ×1

windows ×1