c++ - Eclipse/CDT 无法调试具有链接依赖项的应用程序 - 程序退出,代码为 0xc0000135

标签 c++ eclipse dll eclipse-cdt

我在 Eclipse 中有两个 C++ 项目,“amp”和“amp_auditions”

首先创建一个库,C:\Users\Jared\EclipseWorkspace\amp\Debug\libamp.dll

第二个是测试程序 ('C:\Users\Jared\EclipseWorkspace\amp_auditions'),依赖于第一个,目录为 C:\Users\Jared\EclipseWorkspace\amp\Debug 在 Project Properties > Library Dependencies 下列出

要使用我创建的 amp 库,我认为我需要做的就是链接库文件并包含 header ,但显然并没有那么简单。

一切都可以编译,但是当我去调试时,应用程序立即终止。 GDB 跟踪告诉我:

488,262 19^error,msg="During startup program exited with code 0xc0000135."

如果我直接在终端中运行测试程序,它会提示缺少依赖项。 如果我将 libamp.dll 文件放在 C:\Users\Jared\EclipseWorkspace\amp_auditions 目录中,一切正常。这告诉我这是调试器找不到 libamp.dll

的问题

我错过了什么?为什么我的测试程序不能在 Eclipse 调试透视图中运行?

gcc -v

COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.6.2/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.6.2/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.6.2 (GCC) 

gdb 跟踪:

487,988 2-environment-cd C:/Users/Jared/EclipseWorkspace/amp_auditions
487,991 2^done
487,991 (gdb) 
487,991 3-gdb-set breakpoint pending on
487,991 3^done
487,991 (gdb) 
487,992 4-gdb-set detach-on-fork on
487,992 4^done
487,992 (gdb) 
487,992 5-enable-pretty-printing
487,992 5^done
487,992 (gdb) 
487,992 6-gdb-set python print-stack none
487,993 6^done
487,993 (gdb) 
487,993 7-gdb-set print object on
488,003 7^done
488,003 (gdb) 
488,004 8-gdb-set print sevenbit-strings on
488,005 8^done
488,005 (gdb) 
488,005 9-gdb-set host-charset UTF-8
488,005 9^done
488,006 (gdb) 
488,006 10-gdb-set target-charset WINDOWS-1252
488,016 10^done
488,016 (gdb) 
488,017 11-gdb-set target-wide-charset UTF-16
488,017 11^done
488,017 (gdb) 
488,017 12source .gdbinit
488,027 &"source .gdbinit\n"
488,027 &".gdbinit: No such file or directory.\n"
488,027 12^error,msg=".gdbinit: No such file or directory."
488,027 (gdb) 
488,028 13-gdb-set target-async off
488,028 13^done
488,028 (gdb) 
488,029 14-gdb-set auto-solib-add on
488,029 14^done
488,029 (gdb) 
488,029 15-gdb-set solib-search-path C:\\Users\\Jared\\EclipseWorkspace\\amp\\Debug
488,029 15^done
488,029 (gdb) 
488,031 16-file-exec-and-symbols --thread-group i1 C:/Users/Jared/EclipseWorkspace/amp_auditions/Deb\
ug/amp_auditions.exe
488,065 16^done
488,065 (gdb) 
488,067 17-break-insert --thread-group i1 -t -f main
488,134 18-list-thread-groups
488,167 17^done,bkpt={number="1",type="breakpoint",disp="del",enabled="y",addr="0x004013ad",func="ma\
in()",file="..\\src\\amp_auditions.cpp",fullname="C:\\Users\\Jared\\EclipseWorkspace\\amp_auditions\\
\src\\amp_auditions.cpp",line="14",times="0",original-location="main"}
488,167 (gdb) 
488,167 18^done,groups=[{id="i1",type="process",executable="C:\\Users\\Jared\\EclipseWorkspace\\amp_\
auditions\\Debug\\amp_auditions.exe"}]
488,168 (gdb) 
488,172 19-exec-run --thread-group i1
488,205 =thread-group-started,id="i1",pid="3220"
488,205 =thread-created,id="1",group-id="i1"
488,205 ~"[New Thread 3220.0xa8c]\n"
488,205 19^running
488,205 *running,thread-id="all"
488,205 (gdb) 
488,206 20-list-thread-groups --available
488,260 =thread-exited,id="1",group-id="i1"
488,261 =thread-group-exited,id="i1"
488,262 19^error,msg="During startup program exited with code 0xc0000135."
488,262 (gdb) 
488,262 20^error,msg="Can not fetch data now."
488,263 (gdb) 
488,270 21-gdb-exit
488,293 21^exit

最佳答案

我对问题的理解是这跟eclipse无关。 .dll 在运行时动态链接。这意味着您正在运行的应用程序必须在系统路径或正在运行的可执行文件文件夹中找到库 (.dll)。

解决您当前问题的方法是将编译 .dll 的目录添加到您的 Windows 路径变量中。

关于c++ - Eclipse/CDT 无法调试具有链接依赖项的应用程序 - 程序退出,代码为 0xc0000135,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326989/

相关文章:

c++ - Windows 7 上的 DirectX 11.2 开发

windows - 如何测试 Windows DLL 文件以确定它是 32 位还是 64 位?

c++ - 在 0-255 范围内将 RGB 转换为 HSV 和 HSV 到 RGB 的算法

java - Eclipse "Create Web Service"显示奇怪的错误

python - PyDev 调试器与命令行 django runserver 命令不同

eclipse - 如何让Eclipse接受canvas标签?

c# - 没有将所有类编译成dll

c# - 想在 asp.net 中使用 c++ 库和 dll

c++ - 为什么这不起作用? (C++)

c++ - 在 C++ 中使用 Protobuf 3.2 有困难