2010-01-02 64 views
1

我想用cygwin将C++程序从Linux移植到Windows。现在我已经建立并连接好了,但是当我启动程序时,它立即退出并出现错误。当我尝试在gdb,我得到下面的“未知的目标异常”的结果:Cygwin端口不工作=>在启动时立即退出

$ 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,它提出了对话框,上面写着:“A问题导致程序停止正常工作Windows将关闭该程序并通知您是否有解决方案。“

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

谢谢。

- 威廉

回答

2

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

如果你正在使用任何库,那么你可能有一个链接问题(或者你可能缺少某种类型的DLL)。

您可以通过检查它生成的错误报告来获取更多信息 - the error message Microsoft associates with that error应该包含它无法找到的入口点。

2

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

1

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