我有一个使用c++/cli托管dll的c#程序。该dll包含许多遗留代码,其中包括相当多的win32窗口。
问题在于,dll中的窗口需要比平均值更多的堆栈空间。由于这些不是后台进程而是win32 api,因此我需要扩大GUI线程的堆栈大小(至少我认为dll中的win32 api将使用主GUI进程)。
所以我需要一种方法来扩大c#进程中GUI线程的大小。
由于我找不到任何设置来实现这一点,所以我尝试从命令行使用editbin /STACK,这有效果。问题是,它只在命令行中起作用,如果我尝试将其输入为后置构建步骤,由于某种原因二进制文件的堆栈大小没有改变,即使后置构建步骤已经正确执行且没有出现错误:(
问题在于,dll中的窗口需要比平均值更多的堆栈空间。由于这些不是后台进程而是win32 api,因此我需要扩大GUI线程的堆栈大小(至少我认为dll中的win32 api将使用主GUI进程)。
所以我需要一种方法来扩大c#进程中GUI线程的大小。
由于我找不到任何设置来实现这一点,所以我尝试从命令行使用editbin /STACK,这有效果。问题是,它只在命令行中起作用,如果我尝试将其输入为后置构建步骤,由于某种原因二进制文件的堆栈大小没有改变,即使后置构建步骤已经正确执行且没有出现错误:(
editbin.exe /STACK:2097152 $(TargetPath)
(Editbin.exe在路径中,输出窗口没有错误)
那么我如何为我的c++ dll获取更多的堆栈大小呢?
[更新]
我注意到使用editbin.exe时出现了问题。
这个命令既不在命令行中起作用,也不作为后置构建步骤。
editbin.exe /STACK:2097152 c:\some\path\bin\release\app.exe
这个命令在命令行中可以正常工作,但不能作为构建步骤:
editbin.exe /STACK:2097152 app.exe
但我需要它作为构建后步骤工作。我尝试将其放入批处理文件中,使用echo命令确保调用和工作目录正确,但仍然无法正常工作。很奇怪。
editbin.exe /STACK:2097152 "$(TargetPath)"
这样的? - Bobby