利用C++製作dll並調用dll__C++

來源:互聯網
上載者:User

Abstract:本文講解如何利用c++製作dll並調用dll,用一個簡單的加法函數來作為示範,並給出圖形介面。

1. 開啟vs(我用的是vs2010),然後點擊檔案—>檔案—>建立—>項目,選擇Win32控制台應用程式。並輸入你想建立的vs工程名字和路徑(就命名為addfun)。然後點擊下一步,應用程式類型選擇DLL(D)這一項。然後點擊完成。就會出現下圖。

2.裡面有一個源檔案addfun.cpp,我們可以編輯裡面的內容了。裡面主要是我們想產生的函數。另外我們需要建立一個與addfun.cpp相對應的標頭檔addfun.h。直接右鍵到標頭檔—>添加—>建立項—>選標頭檔,命名為addfun.h。標頭檔就我們想產生的dll的函數名了。
3.現在我們開始編輯addfun.cpp檔案了。如下所示:

// abc.cpp : 定義 DLL 應用程式的匯出函數。//#include "stdafx.h"#include "addfun.h"int add(int a,int b){    return a+b;}

4.然後我們再編輯addfun.h,如下所示:

#include "stdafx.h"extern "C"{    _declspec(dllexport) int add(int a,int b);    typedef int (* ApiAdd)(int,int);}

按照上面的格式我們編譯就能產生我們想要的dll的api。

通過以上4步,我們可以在工程的Debug目錄下找到addfun.dll和addfun.lib。

下面我們就開始介紹怎麼來調用一個dll。
1.建立一個c++工程,就建立一個空檔案就可以了。我們需要的就是addfun.dll和標頭檔。這個都可以拷到我們的新工程下。直接右鍵標頭檔,添加現有項把addfun.h添加過來。添加過來是這樣的:

#include "stdafx.h"extern "C"{    _declspec(dllexport) int add(int a,int b);    typedef int (* ApiAdd)(int,int);}

但是現在我們需要修改它,不要再生產dll,我們需要把它改為

#include "stdafx.h"extern "C"{    int add(int a,int b);    typedef int (* ApiAdd)(int,int);}

上面代碼和下面代碼區別在於少了_declspec(dllexport),這個是產生dll的,我們現在不需要了。

2.下面展示下如何在主函數中載入並調用dll:

// addtest.cpp : 定義控制台應用程式的進入點。//#include "stdafx.h"#include <Windows.h>#include "addfun.h"#include<iostream>#include<stdlib.h>using namespace std;int _tmain(int argc, _TCHAR* argv[]){    int a=2,b=1,c=0;    HINSTANCE hDllInst = LoadLibrary("addfun.dll");    ApiAdd myfun=0;    myfun = (ApiAdd)GetProcAddress(hDllInst,"add");// youFuntionName 在DLL中聲明的函數名    if(myfun)    {        c=myfun(a,b);    }    FreeLibrary(hDllInst);    cout<<c<<endl;    system("pause");    return 0;}

這是程式這一行會有紅色波浪 HINSTANCE hDllInst = LoadLibrary(“addfun.dll”);
這樣修改:右鍵工程(addtest)—>屬性—>常規—>字元集。。
好的,現在就算把程式調用成功了。下面就是結果了:

所以製作dll也不是很難。
其他所有函數都可以這樣來做,我們只需要把我們想打包的函數在標頭檔中指明,然後想使用這些函數的時候,標頭檔包含進去並把_declspec(dllexport)刪除就可以了。然後load相應的dll就可以了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.