繁体   English   中英

从本地Visual C ++代码调用ac#.dll

[英]Calling a c# .dll from native visual c++ code

我正在使用的系统包括:

  • 用最可能的VB或VC ++编写的前端应用程序(不知道,不知道,也没有资料来源)
  • 不受管理的VC ++ .dll
  • AC#.dll

应用程序调用第一个dll,第一个dll调用与第二个dll不同的方法。
为了使第一个dll能够查看和调用C#代码,我遵循了本指南: http : //support.microsoft.com/kb/828736
唯一的不同是,我不使用/ clr:OldSyntax进行编译,如果我这样做了,则更改其他相关的编译选项会使第一个dll从应用程序错误地加载。

一切都能顺利编译; 整个安装程序最初甚至还可以正常工作,但是在两个dll中完全开发完我的代码后,我现在在应用程序中遇到错误。 错误是:

运行时错误'-2147417848(80010108)':
自动化错误
调用的对象已与其客户端断开连接。

并且在第一个dll中执行以下行时发生:

MyManagedInterfacePtr ptrName(__uuidof(MyManagedClass));

我尝试复制完全正常的设置,但没有成功。

关于我如何成功做到这一点的任何想法? 或替代地使两个dll一起工作的其他方法?

提前致谢!

这是与RPC相关的低级COM错误。 这通常在进程外服务器中使用,但这听起来不像您的设置。 如果您从另一个线程在COM接口上进行调用,也将使用它。 原因之一可能是,创建COM对象的线程被允许退出,调用CoUninitialize并拆除COM对象。 从另一个线程进行的后续调用将生成此错误。 错误地引用引用(经常调用Release)也可能导致这种情况。

通过仔细跟踪哪些线程创建一个COM对象以及它们可以存活多长时间来解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM