最近编写C++调用C#编写的dll时,碰到诸多问题,主要原因是在编写C#的dll时还调用了其它的dll动态链接库,所以比较复杂。
在按照正规步骤编写完C# dll之后,觉得万事大吉了,(因为单纯调试dll时并未任何异常和错误),后来才发现后面调用的时候有个细节被忽略了(编译平台)。
首先编写dll的时候
添加dll:点击项目属性,添加引用----------》 #using <..\Debug\xx.dll> ------------------------》 using namespace xxxxclass
实例化引用:CClassApp ^m_example = gcnew CClassApp();
m_example->func();
上面是声明局部变量,但如果是要声明全局托管变量,则需要用函数:
gcroot<CClassApp^> m_example= gcnew CClassApp();
m_example->func();
ok!引用结束,运行的时候碰到好多异常哇!!!!多是dll内部调用其他dll时候出现的。
继续向下看的前提是:C+