目的: 使用C#寫COM DLL , 使用VC2008 呼叫此COM DLL內函式來用
(通常都是用C++寫COM DLL再給別人用 ,所以 其實這麼做是沒有太大意義的 )
參考來源 http://tech.ddvip.com/2009-02/1233554585106909.html
JK講解:
A部分 ....C#
B部分 ...VC++
A.1 用C#寫類別庫
A.2 注意 要在專案屬性 > 組件> 設為 COM Visible ~ 注意!! COM組件名稱 COM組件命名空間
A.3 注意namespcee名稱 類別名稱 函式名稱 三者都要有
A.4 編譯生出DLL
============
接著開VC++2008 建立一個win32專案
B1.資源檢視器> 組態屬性>右邊細項的Commom Language Runtime支援 要選 支援CLR
B2.先把COMDLL檔案放到DEBUG資料夾
B3.配合兩句語法來引入dll檔案
//------------------
#using "..\debug\c2.dll"
using namespace c2;
B4.以上編譯沒錯的話 繼續到主程式區創立類別實體物件
類別名 ^物件名= gcnew 類別名 (很奇怪的方式 似乎是一種指標型態類別物件)
//-------------------
CC ^bbb =gcnew CC();
B5.以上沒錯的話 應該能使用物件bbb來呼叫函數了 (但是bbb是指標物件要用 -> 而不用 . )
//--------------
int aa= bbb->AA(); //有提示視窗了 選函式AA() ,有回傳值1
成功了!!!
以下為細部範例1 by JK (C++部分 引用C# 和VB 寫的COMdll)
=====================
// 32.cpp : 定義主控台應用程式的進入點。
//
#include "stdafx.h"
#using "..\debug\c2.dll" // 當COM組件名稱剛好 = COM組件空間名
using namespace c2; // 當COM組件名稱剛好 = COM組件空間名
// 設 COM VISIBLE的時候可以設定 1. COM組件名稱 2.COM 組件命名空間
#using "..\debug\VB_com1.dll"// 組件名稱
using namespace VBN; // 組件命名空間
int _tmain(int argc, _TCHAR* argv[])
{
VBC ^ppp=gcnew VBC();
int Q=ppp->bb ();
//------------------------
CC ^bbb =gcnew CC();
int aa= bbb->AA();
aa=aa;
//int a = makeLIB.kk();
return 0;
}
以下為引用細部範例2
http://tech.ddvip.com/2009-02/1233554585106909.html
===================================
A.
1、在VS2005中,C#编写DLL并使用C++调用
(1)C#编写DLL程序
建立C#编写的DLL程序AddDll,项目类型为:类库
程序代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace AddDll
{
public class Add
{
public int iadd(int a, int b)
{
int c = a + b;
return c;
}
}
}
==================================
B.
(2)C++编写调用程序
建立C++的Win32控制台应用程序UseDll,项目类型为:Win32控制台应用程序
配置:右键点击解决方案资源管理器中的UseDll,选择“属性”,将公共语言运行库支持设置为“公共语言运行库支持(/clr)”
程序代码:
#include "stdafx.h"
#include "stdio.h"
#using "..debugAddDll.dll"
using namespace AddDll;
int _tmain(int argc, _TCHAR* argv[])
{
int result;
Add ^add = gcnew Add();
result = add->iadd(10,90);
printf("%d",result);
scanf("%s");
return 0;
}
留言列表