【发布时间】:2021-04-08 06:09:10
【问题描述】:
我已经阅读了许多关于类似问题的帖子,但我仍然找不到以下问题的解决方案。
我有两个 CLion (OS Windows) 项目 mylib 和 myexe 位于同一级别的不同目录中。 mylib 包含两个文件: 图书馆.h
void hello();
和 library.cpp
#include "library.h"
#include <iostream>
void hello() {
std::cout << "Hello, World!" << std::endl;
}
mylib 的 CMakeLists.txt 如下:
cmake_minimum_required(VERSION 3.16)
project(mylib)
set(CMAKE_CXX_STANDARD 14)
add_library(mylib SHARED library.cpp library.h)
接下来,项目myexe由一个文件main.cpp组成
#include "../mylib/library.h"
int main() {
hello();
return 0;
}
使用以下 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.16)
project(myexe)
set(CMAKE_CXX_STANDARD 14)
add_executable(myexe main.cpp)
find_library(RESULT mylib "d:/src/test/mylib/cmake-build-debug")
target_link_libraries(myexe "${RESULT}")
这两个项目的构建都没有错误。但是当我运行 myexe 时,没有打印“Hello, world”,我得到以下信息:
Process finished with exit code -1073741515 (0xC0000135)
请帮助我,如何解决这个问题并正确链接 DLL。
【问题讨论】:
-
这个错误意味着你
myexe.exe试图在启动时加载mylib.dll。因此,它已正确链接。请检查myexe.exe和mylib.dll是否建在同一目录下(或之后将mylib.dll复制到myexe.exe的文件夹中)。顺便提一句。在CMake中,您可以强制将所有二进制文件构建到同一输出目录中,以防止将来出现此类问题。 -
仅供参考:microsoft.com: 2.3.1 NTSTATUS Values(请在此站点上进行文本搜索
135。我在 HTML 代码中找不到任何可以直接链接到它的内容。)