我有以下問題;我有我的超級圖書館稱爲MYLIB:它看起來像這樣:C++運行文件與包含庫failes沒有編譯錯誤(CMake/CLion)
我的項目文件夾名爲庫...
mylib.hpp
namespace XYZ {
#ifndef LIBRARY_MYLIB_HPP
#define LIBRARY_MYLIB_HPP
int add(int, int);
#endif //LIBRARY_MYLIB_HPP
}
mylib.cpp
#include "mylib.hpp"
namespace XYZ {
int add(int a, int b) {
return a + b;
}
}
它們在同一個目錄中。
我建立它使用CMake的有以下的CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(library)
add_library(library SHARED mylib.cpp)
建築量:
[ 50%] Building CXX object CMakeFiles/library.dir/mylib.cpp.obj
[100%] Linking CXX shared library liblibrary.dll
[100%] Built target library
這工作,這給了我一個* .dll文件就像它應該。
我現在嘗試使用這個庫在我的其他項目
我複製了.HPP文件到項目所在地。 我main.cpp中看起來是這樣的:
的main.cpp
#include <iostream>
#include "mylib.hpp"
int main() {
std::cout << "Hello";
std::cout << XYZ::add(5, 7) << std::endl;
return 0;
}
的CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(uselib)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(uselib ${SOURCE_FILES})
target_link_libraries(uselib C:/User/........./liblibrary.dll)
大廈輸出:
[ 50%] Building CXX object CMakeFiles/uselib.dir/main.cpp.obj
[100%] Linking CXX executable uselib.exe
[100%] Built target uselib
作品。那麼現在我的問題。
有一次,我嘗試啓動它,它崩潰以下退出代碼:
C:\Users\......\uselib.exe
Process finished with exit code -1073741515 (0xC0000135)
當我評論的方法叫喚,它就像一個魅力。
我一直在這裏呆了幾個小時,有什麼幫助嗎?
好像你正在做的大部分都很好。也許一個基本的檢查:是否可以在你正在執行你的應用程序的任何工作目錄中使用dll? (或通過PATH) – hauron
@hauron在將.dll複製到執行目錄後,我設法讓它運行。非常感謝! –