1

我正在尝试使用 cygwin 将 C++ 程序从 Linux 移植到 Windows。我现在可以很好地构建和链接,但是当我启动程序时,它会立即退出并出现错误。当我在 gdb 中尝试时,我得到以下“未知目标异常”结果:

$ gdb ../../bin/ARCH.cygwin/release/myApp
GNU gdb 6.8.0.20080328-cvs (cygwin-special)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This GDB was configured as "i686-pc-cygwin"...
(no debugging symbols found)
(gdb) run
Starting program: bin/ARCH.cygwin/release/myApp.exe
[New thread 1452.0x99c]
gdb: unknown target exception 0xc0000139 at 0x77149eed

Program exited with code 030000000471.
You can't do that without a process to debug.

当不在 gdb 中时,它会弹出一个对话框,上面写着:“一个问题导致程序停止正常工作。Windows 将关闭该程序并通知您是否有可用的解决方案。”

任何想法我可能做错了什么?

谢谢。

-威廉

4

3 回答 3

2

Microsoft 将 0xC0000139 描述为 STATUS_ENTRYPOINT_NOT_FOUND。这表明您的程序没有正确链接。仔细检查您的构建脚本以确保它编译并链接所有相关文件。

如果您正在使用任何库,那么您可能会在那里遇到链接问题(或者您可能缺少某种 DLL)。

您可以通过查看它生成的错误报告来获取更多信息 - Microsoft 与该错误相关联的错误消息应准确包含它无法找到的入口点。

于 2010-01-02T23:51:41.770 回答
2

STATUS_ENTRYPOINT_NOT_FOUND 通常意味着您正在链接的功能未在程序运行的系统上实现;即你试图在 Windows XP 上调用一个函数,但它只是从 Windows Vista 开始实现的。您可以使用 Dependency Walker 查看无法找到哪些特定功能。

于 2010-01-03T03:02:28.853 回答
1

检查执行应用程序所需的库并将适当的 dll 文件复制到可执行文件的路径中。

于 2011-02-15T17:51:27.663 回答