我有简单的程序如下:
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)