日期:2014-05-17  浏览次数:20987 次

如何在非托管C++中调用托管C#代码
现在做到一个视频驱动二次开发的项目,视频服务平台的SDK是C#的,但是要集成到我们的平台是MFC架构的,一个是托管,一个是非托管,就牵涉到了一个非托管MFC调用托管C#的问题
网上的方法多数是将C#封装成为COM,但是我在封装的时候遇到一个问题就是,我封装的这个COM要引用到视频SDK中的很多dll,但是这些dll是没有强命名的

后来我在网上找到了给没有代码的dll强命名的方法——用指令先生成一个snk密钥文件,然后对没有强命名的dll进行反编译,然后把snk密钥植入进去,然后再重新编译成为dll,再重新引用到项目里面,这样的在编译的时候强命名的问题是没有了,可是又说我没有引用dll,可是我明明是引用了啊,如下图

纠结了好多天了,大神们求救啊!!!小弟感激不尽啊
C++ C# 托管 非托管 调用

------解决方案--------------------
楼主,用C#开发的COM-visible的assembly是不需要强签名的,所以你不需要给那些SDK里的DLL签名。
如何制作COM-visible的assembly,请参考我的博客:http://blog.csdn.net/pkudzy/article/details/9199925
最后部署COM-Visible的assembly时,可以用.net framework提供的RegAsm.exe方法。另外,可以用TlbImp.exe来为COM-Visible的assembly生成tlb文件,那样就可以在C++的代码里import这个tlb文件了。