|
在VS2015中先創(chuàng)建C#項(xiàng)目,然后再創(chuàng)建要編寫的動(dòng)態(tài)庫DLL項(xiàng)目,這樣做的好處是整個(gè)解決方案的編程環(huán)境是C#模式,這樣就可以有很多智能的提示或快捷的編程方式在整個(gè)解決方案中都可以使用。 一:創(chuàng)建C#控制臺(tái)應(yīng)用程序:用于調(diào)用C++編寫的DLL (1)啟動(dòng)VS2015》文件》新建》項(xiàng)目,在彈出的新建項(xiàng)目對(duì)話框中按下圖進(jìn)行選擇填寫,先填寫項(xiàng)目的名稱,再修改解決方案的名稱。
(2)項(xiàng)目創(chuàng)建后,整體效果如下圖:
二:用C++創(chuàng)建DLL 下面僅僅創(chuàng)建了DLL,具體創(chuàng)建DLL的講解請(qǐng)參考【在VS2015中用C++編寫可被其它語言調(diào)用的動(dòng)態(tài)庫DLL】 (1)在解決方案上右擊選擇【添加】>【新建項(xiàng)目】
(2)在添加新項(xiàng)目對(duì)話框中,按下圖進(jìn)行選擇填寫
(3)在下圖的創(chuàng)建向?qū)?duì)話框中進(jìn)行如下選擇
(4)在下圖的創(chuàng)建向?qū)?duì)話框中進(jìn)行如下選擇
(5)項(xiàng)目創(chuàng)建后,整體效果如下圖:
(6)在【頭文件】上右擊進(jìn)行如下選擇
(7)在添加新項(xiàng)對(duì)話框中進(jìn)行如下選擇填寫
(8)在CreateDLL.cpp文件中添加對(duì)CreateDLL.h的引用并且添加下圖所示測試代碼
(9)在CreateDLL.h文件中添加下圖所示測試代碼
(10)在【源文件】上右擊進(jìn)行如下選擇
(11)在添加新項(xiàng)對(duì)話框中進(jìn)行如下選擇填寫
(12)在CreateDLL.def文件中添加下圖所示測試代碼
(13)先將解決方案切換到Release模式,再在CreateDLL項(xiàng)目名稱上右擊選擇【生成】或【重新生成】 注:Release模式下生成的DLL才是最終的,Debug模式下生成的DLL有時(shí)會(huì)出問題
(14)在解決方案所在的目錄中打開Release文件夾即可看到生成的DLL
(15)用Dependency Walker查看導(dǎo)出函數(shù)名是否正確,直接將CreateDLL.dll拖到Dependency Walker軟件界面即可,如下圖
(16)使用DLL函數(shù)查看器(3.5)查看導(dǎo)出函數(shù)名和參數(shù)數(shù)量是否正確,直接將CreateDLL.dll拖到DLL函數(shù)查看器(3.5)軟件界面即可,如下圖
三:用C#項(xiàng)目調(diào)用C++創(chuàng)建DLL (1)將C#項(xiàng)目設(shè)置為啟動(dòng)項(xiàng)目,并且將解決方案設(shè)置為Debug模式
(2)在C#項(xiàng)目的program.cs文件中編寫如下代碼,代碼中DLL的路徑中的斜杠,測試發(fā)現(xiàn)左斜、右斜都可以,代碼中的相對(duì)路徑指的是:編譯后的exe程序相對(duì)于DLL的路徑
(5)在C++項(xiàng)目的源碼中設(shè)置斷點(diǎn),在Debug模式下運(yùn)行C#程序會(huì)自動(dòng)跳到斷點(diǎn)處,如下圖,從中可以看到C#項(xiàng)目中的值已經(jīng)傳到C++項(xiàng)目中了
(6)源碼下載地址:在VS2015中用C++創(chuàng)建DLL并用C#調(diào)用且同時(shí)實(shí)現(xiàn)對(duì)DLL的調(diào)試源碼 (7)Dependency Walker軟件下載地址:Dependency Walker動(dòng)態(tài)庫導(dǎo)出函數(shù)查看器 (8)DLL函數(shù)查看器(3.5)軟件下載地址:DLL函數(shù)查看器(3.5) |
|
|