【发布时间】:2011-04-05 11:35:58
【问题描述】:
我有一个使用 c++/cli 托管 dll 的 c# 程序。该dll包含大量遗留代码,由不少win32窗口组成。
问题是,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
但我需要它作为后期构建步骤。我试图把它放到一个批处理文件中,回显以确保调用和工作目录都可以,但它仍然不起作用。奇怪。
【问题讨论】:
-
你试过用批处理文件包装你的命令吗?那会让它更像命令行,所以也许它可以解决问题。
-
你也可以发布你的 Post-Build-Macro 吗?也许我们可以在那里找到错误。
-
herenvardo,我尝试将其放入 cmd,但无济于事:(
-
@Bobby,发布了后期构建步骤。
-
@Sam:在我看来应该可以工作...路径中有空格吗?喜欢
editbin.exe /STACK:2097152 "$(TargetPath)"?
标签: c# dll c++-cli stack-overflow