0

如何将 Visual-C++ GUI 项目从应用程序转换为 DLL,然后让 C# 应用程序调用 DLL 并运行 GUI?

当我尝试时,“dlg.DoModal();” 导致“调试断言失败!”。

我有一个 Visual Studio 2010 C++ 项目,其 Config Props 设置为:“Config Type is app (.exe) Use MFC in a Shared DLL Not Using ATL”

当我将其更改为 DLL 时,选择 Common Lang Run Support (/clr),我可以从我的 C# 解决方案中成功调用其各个函数。

我尝试在调用“theApp.InitInstance();”的 DLL 中调用测试函数 但这会生成“调试断言失败!”。

4

2 回答 2

0

看起来您试图将 Win32 应用程序转换为仅使用一个开关 (/clr) 的 .NET 应用程序,但这是行不通的(它可以工作,但在非常简单的情况下,而不是在您的情况下)。

您仍然可以将 EXE 转换为 Win32 非托管 DLL(这需要在 .def 文件和主代码中编写几行额外的行),然后使用 P/Invoke 调用该函数。

于 2013-07-05T18:14:36.600 回答
0

创建一个空的 MFC DLL 项目并将所有基本代码从 Exe 复制到其中。当您从头开始创建 DLL 应用程序时,仅在 Visual Studio 设置中更改项目类型不会正确更改向导生成的所有其他代码。

于 2013-07-05T18:51:21.023 回答