Cmake:静态链接在运行时需要库(appcrash 0xC0000135)
Cmake: static linking requires libraries at the runtime (appcrash 0xC0000135)
我正在尝试将一系列外部库(使用libjpeg的liblept)链接到一个项目。多次尝试和搜索互联网只是导致了不同的cmake错误,这让非常困惑
项目文件夹的结构:
/Project
|leptonica
|--|include
| |--|leptonica
| | |--|<allheaders.h used by main.cpp is here>
| | |<jpeglib.h used by Leptonica is here>
| |lib
| |--|<.lib files here>
|CMakeLists.txt
|main.cpp
现在,CMakeLists。关于链接这些库,我唯一知道的是,围绕Stack Overflow找到的基本提示会产生不同的错误。除以下情况外:
这将链接项目,但应用程序因0xC0000135
而崩溃(找不到dll)。
cmake_minimum_required(VERSION 3.5)
project(Project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_library(liblept168 STATIC IMPORTED)
set_target_properties(
liblept168
PROPERTIES LINKER_LANGUAGE CXX
IMPORTED_LOCATION %Project%/leptonica/lib/liblept168.lib)
add_library(libjpeg8c-static-mtdll STATIC IMPORTED)
set_target_properties(
libjpeg8c-static-mtdll
PROPERTIES LINKER_LANGUAGE CXX
IMPORTED_LOCATION %Project%/leptonica/lib/libjpeg8c-static-mtdll.lib)
link_directories(leptonica/lib)
include_directories(leptonica/include)
include_directories(leptonica/include/leptonica)
add_executable(Project "${SOURCE_FILES}")
target_link_libraries(Project liblept168 libjpeg8c-static-mtdll)
怎么了?
感谢Jack关于.lib
s的说明,我发现了问题。问题是liblept168.lib
是liblept168.dll
的链接文件,而不是静态库。因此,dll应该复制到可执行文件夹中。生成的CMakeLists
如下所示:
cmake_minimum_required(VERSION 3.5)
project(Jpeg_to_values)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_library(liblept168 SHARED IMPORTED)
set_target_properties(
liblept168
PROPERTIES LINKER_LANGUAGE CXX
IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/leptonica/lib/liblept168.dll
IMPORTED_IMPLIB ${PROJECT_SOURCE_DIR}/leptonica/lib/liblept168.lib)
add_library(libjpeg8c-static-mtdll STATIC IMPORTED)
set_target_properties(
libjpeg8c-static-mtdll
PROPERTIES LINKER_LANGUAGE CXX
IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/leptonica/lib/libjpeg8c-static-mtdll.lib)
link_directories(leptonica/lib)
include_directories(leptonica/include)
include_directories(leptonica/include/leptonica)
add_executable(Jpeg_to_values "${SOURCE_FILES}")
target_link_libraries(Jpeg_to_values liblept168 libjpeg8c-static-mtdll)
add_custom_command(
TARGET Jpeg_to_values POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${PROJECT_SOURCE_DIR}/leptonica/lib/liblept168.dll"
"$<TARGET_FILE_DIR:Jpeg_to_values>")
相关文章:
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- CLion、MinGW 和 SDL2:进程已完成,退出代码为 -1073741515 (0xC0000135)
- 运行Qt时处理退出代码0xC0000135 hello world
- OpenGL 应用程序退出,退出代码为 -1073741515 (0xC0000135)
- CLION QT5-退出代码-1073741515(0xc0000135)
- PyCharm CE 2017.2.2:APPCRASH 在 Windows 7 上随机"Python has stopped working"
- APPCRASH(不在调试时)和使用QtCreator(C/C++)的分段故障
- Cmake:静态链接在运行时需要库(appcrash 0xC0000135)
- 当我尝试使用按钮添加QTabWidget时,Appcrash
- Netbeans 8.0.2 返回"During startup program exited with code 0xc0000135"
- 重定向APPCRASH转储(或将其关闭)
- Netbeans:Appcrash在运行时(2d动态数组)
- C++ QT libXL 错误:"During Startup program exited with code 0xc0000135"
- 可以't在qt创建者中调试,cdb崩溃0xC0000135
- 从迭代器调用.value()会导致Appcrash
- C++ appcrash USER32.dll
- App.Windows.exe中0x7725D4F2(ntdll.dll)处出现未处理的异常:0xC0000135:无法
- 如何才能因为本机C++DLL失败而捕获C#AppCrash
- 一个初学者c++程序的APPCRASH,在函数上调用一个公共方法