无法在Windows上运行使用Graphviz库编译的.exe文件

问题描述 投票:0回答:1

描述:

我想在我的 Cpp 项目中加入一个 Graphviz 库

gvc
Cpp 项目是一个极其简化的语法分析器,我包含了
graphviz/gvc.h
来绘制语法分析树。

在涉及graphviz之前我成功构建并运行了项目,并且程序返回了预期的结果。但是当我尝试将graphviz引入进来时遇到了困难。

我通过 CMake

MinGW
 工具构建项目。
然后我写了我的
CMakeLists.txt
如下:

cmake_minimum_required(VERSION 3.10) project(Analyser) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) set(GV_HOME "D:/Program Files (x86)/Graphviz") file(GLOB SRC CONFIGURE_DEPENDS src/*.cpp) include_directories(${GV_HOME}/include) include_directories(include) link_directories(${GV_HOME}/lib) add_executable(${PROJECT_NAME} src/main/main.cpp ${SRC}) target_link_libraries(${PROJECT_NAME} gvc cgraph)

环境:

编译器工具链:MinGW-64 with GCC 13.2.0

CMake 版本:3.27.9

graphviz:从官网获取,基于Visual Studio C++ 2019构建

系统:带有 64 位 x86 CPU 的 Windows 10

问题:

然后我

成功编译了项目并得到了一个.exe文件。

好吧,奇怪的事情发生了:

它运行时没有在终端上返回任何结果。

我无法弄清楚原因...

项目结构如下:

project--- |*--src | |\*--main | | |--main.cpp | | |--input.cpp | | | |--LexicalAnalyser.cpp | |--SyntaxAnalyser.cpp | |--ErrorProcessor.cpp | |--utils.cpp | |*--build | |*--include | |--SyntaxAnalyser.h | |--LexicalAnalyser.h | |--utils.h | |--CMakeLists.txt
一开始涉及到graphviz的时候,我无法编译项目。

然后我尝试在

cgraph

中的
target_link_libraries()
中添加一个条目
CMakeLists.txt
,最终成功编译,但无法正常运行.exe。

我想知道如何解决这个问题。

努力:

  • 尝试调试:使用

    gdb

    进行调试,但无法成功运行
    gdb
    ,并退出并显示信息:
    [Thread 8244.0x1d30 exited with code 3221225781]
    During startup program exited with code 0xc0000135.
    
    

  • 尝试在基本的 .exe 上进行调试,其中包括

    graphviz/gvc

     来绘制简单的有向图。尽管如此,成功地编译了它,但未能运行它并返回预期的结果。也尝试对其进行调试,遇到了与上述相同的信息。

解决方案(2024/5/1):

  • 这是由于

    NOTnecessary DLL

    放在工作目录中引起的,尽管我已经在
    system environment
    中设置了graphviz二进制目录的路径。

  • 因此,要解决这个问题,需要做的是明确指出

    CMakeLists.txt

    中DLL目录的路径,或者在项目下的适当目录中复制DLL。

c++ cmake graphviz
1个回答
0
投票
问题是因为缺少

necessary DLLs.

所以程序在没有加载DLL的情况下无法运行,自然就等于什么都没发生。

这里包括第三方库(graphviz)需要考虑DLL。

© www.soinside.com 2019 - 2024. All rights reserved.