|
当VC等调用C#写的COM时,用regasm /tlb生成TLB文件,也可用tlbexp.exe,在VC等中加载TLB文件,当用C#调用VC等写的COM时,用tlbimp.exe,你可以写一个程序调试一下
下面介绍C#调用C++(www.cppentry.com)动态链接库方法。
添加System.Runtime.InteropServices命名空间
如是COM就直接用静态函数调用:
- public static int GetNum(
- int lFileSeqNo,
string sExtType, string sExtNumber, string sFormID, string sOperationDate, string sSystemRegistDate, out int lCount, out int lErrorType, out int lErrorCode) { int iRet; WOBCom.ObjClass obj = new WOBCom.ObjClass(); iRet = obj.GetNum( lFileSeqNo, sExtType, sExtNumber, sFormID, sOperationDate, sSystemRegistDate, out lCount, out lErrorType, out lErrorCode); return iRet; }
如不使COM是普通的DLL
不能直接用
只能在C++(www.cppentry.com)中加一个对外的接口:
- extern "C" __declspec(dllexport) WOExtConRegObj* OutGetObjConstructor();
- extern "C" __declspec(dllexport) void OutGetObjDestructor(WOExtConRegObj* outGetObj);
-
- extern "C" __declspec(dllexport) long SelectDummyRecord(long *lErrorType,
- long *lErrorCode,
- WOExtConRegObj* outGetObj);
-
- extern "C" __declspec(dllexport) WOExtConRegObj* OutGetObjConstructor()
- {
- WOExtConRegObj* outGetObj = new WOExtConRegObj();
- return outGetObj;
- }
-
- extern "C" __declspec(dllexport) void OutGetObjDestructor(WOExtConRegObj* outGetObj)
- {
- delete outGetObj;
- }
-
- extern "C" __declspec(dllexport) long SelectDummyRecord(long *lErrorType,
- long *lErrorCode,
- WOExtConRegObj* outGetObj)
- {
- return outGetObj->SelectDummyRecord(lErrorType,
- lErrorCode);
- }
就可直接用C#调用C++(www.cppentry.com)动态链接库了 - [DllImport("XXX.dll", EntryPoint="SelectDummyRecord", ExactSpelling=false, CallingConvention=CallingConvention.Cdecl)]
- private static extern int SelectDummyRecord(out int lErrorType,out int lErrorCode,int outGetObj);
-
-
-
-
-
-
-
-
- public int SelectDummyRecord(out int lErrorType,out int lErrorCode)
- {
- int intRtn;
-
- intRtn = SelectDummyRecord(
- out lErrorType,
- out lErrorCode,
- m_OutGetObj);
- return intRtn;
- }
这样就解决了C#调用C++(www.cppentry.com)写的动态链接库的问题。
【编辑推荐】
- C#程序中的数据显 示:自定义标签和XML、XSL
- C#自定义事件是如何生成的
- C# 自定义控件dll文件的生成步骤
- C#自定义快捷键的实现
- C#自定义事件的步骤介绍
【责任编辑: 王苑 TEL:(010)68476606】
|