C++/CLI x64 WindowsForms App (VS 2015) 的入口点



我与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?
  • 怎么能找到这种符号呢?我试图通过垃圾箱找到它们,但没有成功!

啊,隧道尽头的光,用于这个令人讨厌的被忽视的问题。 您可以通过在 vc/lib/amd64 中 greping .lib 文件来找到正确的损坏名称。 弹出msvcmrt.lib,名称是:

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

顺便说一句,重整算法中的错误有点大,它不应该添加额外的 E,因为这些是托管标识符。 链接和运行良好,我还没有测试它是否解决了静态初始化顺序惨败问题。 这是有希望的。

最新更新