【发布时间】:2015-03-18 14:58:22
【问题描述】:
我正在 CLion 中测试一个简单的问题,但我很困惑: 看来我无法在基本的 hello world 案例中包含使用 dlopen 的功能:
#include <iostream>
#include <dlfcn.h>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
char * file = (char*)"/path/to/file";
dlopen(file, RTLD_NOW);
return 0;
}
上述失败,未定义对 `dlopen' 的引用 我在 14.04 Ubuntu - 64 位 使用样板 CMakeLists.txt 文件。 看来我没有链接 libdl.so,即使我包含 -ldl 标志 可以使用一些帮助
CMakeLists.txt 文件:
cmake_minimum_required(VERSION 3.1)
project(testENC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ldl -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(testENC ${SOURCE_FILES})
【问题讨论】:
-
你能告诉我们你的
CMakeLists.txt吗? -
cmake_minimum_required(VERSION 3.1) project(testENC) 引用文件: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ldl -std=c++11") set(SOURCE_FILES main.cpp) add_executable(testENC ${SOURCE_FILES})
-
我认为
CMAKE_CXX_FLAGS是 compilation 标志,您需要添加一个 linking 标志。但正如我所说,您应该为此使用 CMake 的内置功能,而不是使用变量。
标签: c++ ubuntu ide dlopen clion