Ada链接器'-mwindows'选项kill文本输出

时间:2012-08-06 09:49:55

标签: gcc ada

我使用的是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文件夹,但它没有帮助。

伙计们,请帮帮我吧? 谢谢!

2 个答案:

答案 0 :(得分:2)

这可能是由于start-up the Ada RTL失败了。

我认为你想要的操作是adainit()

答案 1 :(得分:2)

根据FSF GNAT User Manual-mwindows表示没有控制台;那么Put_Lineprintf输出会去哪里?我的猜测是,Ada调用会引发一个异常,它会(默默地)结束程序,而C调用则无效。

如果我是对的,我对GPS中的行为没有任何解释。