C#调用BCB DLL

w88529593 w88529593 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近试着在C#中调用C++ builder 开发的DLL中的Form,但是程序只要一调用就出现以下异常:
“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。”
这个错误,我按照网上的方法:在VS2010中按快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants-> LoaderLock,将这个选项的选中状态去掉,然后运行的时候出现以下错误:
“System.StackOverflowException”类型的未经处理的异常出现在 System.Windows.Forms.dll 中。确保您没有无限循环或无限递归。”

C#部分的代码:
DLL函数的声明代码:
[DllImport("Project1.dll", EntryPoint = "ShowDLLForm", SetLastError = true,
CallingConvention=CallingConvention.StdCall)]
private static extern void ShowDLLForm();

C#调用代码:
private void button1_Click(object sender, EventArgs e)
{
ShowDLLForm();
}

-----------------------------------------------------------------------------
c++ builder代码:

extern "C" __declspec(dllexport) __stdcall void ShowDLLForm()
{
TForm1 *frm=new TForm1(Application);
frm->ShowModal();
delete frm;
}

这个DLL,我用C++ Builder写个Exe可以调用,没有任何问题,但是用C#就出现以上错误,请高手指点一下
...全文
评论 8
收藏 已收藏
分享
返回顶部
w88529593
Windows SDK/API 1,222 成员 8,135 内容