C ++ / CLI x64 WindowsForms应用程序的入口点(VS 2015)

时间:2017-01-05 13:07:07

标签: c++-cli

我和Visual Studio 2015 c++/CLI boost::thread中的用户有同样的问题:如果我一起使用boost,Windows Forms和C ++ / Cli,我的应用程序在启动时崩溃。

建议的解决方案适用于我(将子系统更改为控制台);唯一的缺点是控制台是与GUI一起启动的。

我找到了另一种解决方案(见https://bytes.com/topic/net/answers/642179-c-cli-winforms-app-native-static-library-singletons-cra):将入口点更改为“?mainCRTStartupStrArray @@ $$ FYMHP $ 01AP $ AAVString @ System @@@ Z”。

但是这只适用于编译32位的情况;对于64位,符号无法解析。 我的问题:

  • 是否有适用于x64的类似符号?
  • 怎么能找到这种符号?我试图通过dumpbin找到它们但没有成功!

1 个答案:

答案 0 :(得分:3)

啊,在这个令人讨厌的被忽视的问题的隧道尽头的光。您可以通过在vc / lib / amd64中使用.lib文件来查找正确的受损名称。 out pops msvcmrt.lib,名称为:

?mainCRTStartupStrArray@@$$FYMHP$01EAPE$AAVString@System@@@Z

修复算法btw中的一点错误,它不应该添加额外的E,因为这些是管理标识符。链接和运行正常,我还没有测试,如果它解决了静态初始化顺序惨败问题。这很有希望。