C++ cli C+的入口点+/CLI x64 Windows窗体应用程序(与2015年相比)

C++ cli C+的入口点+/CLI x64 Windows窗体应用程序(与2015年相比),c++-cli,C++ Cli,我的问题与用户相同:如果我同时使用boost、Windows窗体和C++/Cli,我的应用程序在启动时会崩溃 建议的解决方案适用于我(将子系统更改为控制台);唯一的一个小缺点是控制台与GUI一起启动 我发现了另一个解决方案(请参阅):将入口点更改为“?MainCrtStartupTrarray@@$$FYMHP$01AP”$AAVString@System@@@Z” 但是,这仅在编译为32位时有效;对于64位,无法解析符号。 我的问题是: 是否有类似的符号也适用于x64 人们怎么能找到这些符号

我的问题与用户相同:如果我同时使用boost、Windows窗体和C++/Cli,我的应用程序在启动时会崩溃

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

我发现了另一个解决方案(请参阅):将入口点更改为“?MainCrtStartupTrarray@@$$FYMHP$01AP”$AAVString@System@@@Z”

但是,这仅在编译为32位时有效;对于64位,无法解析符号。 我的问题是:

  • 是否有类似的符号也适用于x64
  • 人们怎么能找到这些符号呢?我试图通过垃圾桶找到它们,但没有成功
啊,这个令人讨厌的被忽视的问题就在隧道的尽头。通过将vc/lib/amd64中的.lib文件变灰,可以找到正确的损坏名称。弹出msvcmrt.lib,名称为:

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

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

我知道这不是对你问题的直接回答,但你会转而为你工作吗?如果不是,你能简单地解释为什么需要提升线程吗?@ DavidYaw:可以,但是我必须使用现有的C++代码,内部使用Boost线程,所以切换不是一个选项。谢谢你,汉斯,我明天来测试。你能详细说明一下“grepping the.lib files”时你到底做了什么吗?只是在二进制文件中进行文本搜索。我使用Far文件管理器,它使这变得容易。