【发布时间】:2017-03-28 10:07:19
【问题描述】:
我遇到了以下问题;我有一个名为 mylib 的超级库:它看起来像这样:
我的项目文件夹被称为库...
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;
}
}
它们在同一个目录中。
我使用带有以下 CMakeLists.txt 的 CMake 构建它
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 在将 .dll 复制到执行目录后,我设法让它运行。非常感谢!