我使用的是GNAT GPS 2012.由于某些库,我必须使用'-mwindows'选项成功链接我的程序(它实际上是混合Ada / C ++)。
该程序在2种情况下正常工作: 1)如果通过GNAT启动器启动它(我的意思是放在工具栏顶部的三角形按钮) - 在这种情况下一切正常 2)如果从Windows cmd或资源管理器中单独启动“.exe”,并且不要从Ada端输出任何文本。
但是(!)如果启动程序与windows cmd或explorer分开,则: 1)调用Put或Put_Line函数 - >程序立即完成(没有错误,没有例外,只是退出) 2)如果从C ++端调用printf,它将被忽略
我在单独的混合Ada / C ++简单示例中建立了当'-mwindows'链接器选项添加到Ada链接器时出现此问题。
我还尝试将dll从GNAT项目复制到exe文件夹,但它没有帮助。
伙计们,请帮帮我吧? 谢谢!
答案 0 :(得分:2)
这可能是由于start-up the Ada RTL失败了。
我认为你想要的操作是adainit()
。
答案 1 :(得分:2)
根据FSF GNAT User Manual,-mwindows
表示没有控制台;那么Put_Line
或printf
输出会去哪里?我的猜测是,Ada调用会引发一个异常,它会(默默地)结束程序,而C调用则无效。
如果我是对的,我对GPS中的行为没有任何解释。