1. 程式人生 > >Dll介面定義

Dll介面定義

 DLL中匯出函式的宣告有兩種方式:一種為在函式宣告中加上__declspec(dllexport),這裡不再舉例說明;另外一種方式是採用模組定義(.def) 檔案宣告,.def檔案為連結器提供了有關被連結程式的匯出、屬性及其他方面的資訊。


            首先建立 一個DLL程式,.cpp中
int __stdcall Add(int numa, int numb)
{
       return (numa + numb);
}

int __stdcall Sub(int numa, int numb)
{
        return (numa - numb);
}

             然後建立一個.def的檔案,在裡面加上

;DllTestDef.lib : 匯出DLL函式
;作者:----
LIBRARY DllTestDef
EXPORTS
Add @ 1
Sub @ 2

           最後建立一個測試程式:.cpp檔案如下:
#include <iostream>
#include <windows.h>

using namespace std;

typedef int (__stdcall *FUN)(int, int);
HINSTANCE hInstance;
FUN   fun;

int main()
{
       hInstance = LoadLibrary("DLLTestDef.dll");
       if(!hInstance)
           cout << "Not Find this Dll" << endl;
       fun = (FUN)GetProcAddress(hInstance, MAKEINTRESOURCE(1));
       if (!fun)
       {
              cout << "not find this fun" << endl;
       }
       cout << fun(1, 2) << endl;
       FreeLibrary(hInstance);
       return 0;
}



說明:
.def檔案的規則為:

  (1)LIBRARY語句說明.def檔案相應的DLL;

  (2)EXPORTS語句後列出要匯出函式的名稱。可以在.def檔案中的匯出函式名後加@n,表示要匯出函式的序號為n(在進行函式呼叫時,這個序號將發揮其作用);

  (3).def 檔案中的註釋由每個註釋行開始處的分號 (;) 指定,且註釋不能與語句共享一行。

相關推薦

Dll介面定義注意事項

Dll 對外介面不允許使用STL。必須使用原始型別。 examp說明:因為STL不同的平臺實現方式不一樣。所以可能導致資料不一致問題。 Vs2010:sizeof(vector) = 20; VS2013:sizeof(vector) = 16;

Dll介面定義

 DLL中匯出函式的宣告有兩種方式:一種為在函式宣告中加上__declspec(dllexport),這裡不再舉例說明;另外一種方式是採用模組定義(.def) 檔案宣告,.def檔案為連結器提供了有關被連結程式的匯出、屬性及其他方面的資訊。             首先建立

[c#]Dll定義目錄

sku 百度 tar onf bind ati 文件 c# mas 做個項目用了一堆庫,放在根目錄下面亂七八糟的。昨天百度了幾下。感覺都沒說清楚。。今天找了大半天才知道原來。。。好吧我是菜鳥。因為剛剛把一個測試工程2.0轉4.0之後這個文件app.config才浮出來,只好

vue訪問介面定義全域性變數

1.在config裡面找到dev.env.js以及prod.env.js兩個檔案,分別寫上定義的常量以及埠號,注意單引號雙引號 2. 在ajax的時候直接寫     `${process.env.URL_PATH}/app/appLogin`&

java學習筆記(十)-- java新特性 (列舉 & 註解 & 介面定義加強 & Lambda表示式)

列舉 (enum) 高階的多例模式 java中列舉使用enum關鍵字定義列舉 列舉就是一種多例設計模式 enmu Color{     RED,BLUE,GREEN;     } enum Color{

前後端分離之介面定義滯後帶來的問題

   前言:   目前正參與我司一個後臺管理型專案,我司採取的是前後端分離開發,後端採用dubbo框架提供介面,前端整合egg.js和dubbo.js;各司其職,我和一道友專門負責前端伺服器整個模組,伺服器搭建探索過程費了點時間(也不太多),然後就前端頁面的排期,給我的模組排了

《隨筆十五》——C#中的 “ C#中的類定義介面定義、遮蔽基類成員、 ”

目錄 C#中的類定義 介面的定義 遮蔽基類成員 基類訪問 C#中的類定義 class MyClass { //Members } ●   這樣定義一個類後,就可以在專案中能訪問該定義的其他位置對該類進行例項化。 在預設情況下,

JDK8新特性-介面定義增強

1. 使用default、static新增普通方法 JDK8之前,介面中只可以有全域性屬性和抽象方法。 JDK8之後可以在介面中新增普通方法,使用default關鍵字 除了使用default定義方法之外,還可以使用static定義方法。 一旦使用static定義方法,意味著該方法只能通過類名

【程式碼集合】連線資料庫、查詢所有資料,API介面定義

連線資料庫、查詢所有資料,API介面定義 <?php $dbhost = 'localhost:3306'; //mysql伺服器主機地址 $dbuser = 'root'; //mysql使用者名稱 $dbpass = 'root';//m

eos wasm虛擬機器相關介面定義實現

wasm虛擬機器相關介面定義實現 執行流程 controller::push_transaction()  // 事務   -> transaction_context::exec()  // 事務     -> transaction

Servlet介面定義的5種方法介紹

Servlet介面定義了5種方法 init() service() destroy() getServletConfig() getServletInfo() import java.i

typescript介面定義

介面描述: 介面的使用,這裡講的是介面的使用 (其實就是定義一些規定) 介面定義 interface Accountable{ getIncome():number; } 介面實現 如果實現了一個指定的介面,那麼必須實現這個接口裡面多定義的所有方法,

USB3.0介面定義淺析

https://www.bilibili.com/read/cv372294 數碼 4-11 357閱讀14點贊3評論 USB誰都見過、用過,作為世界上最常見的介面之一,USB早就走進了我們的生活。那麼USB的介面定義是怎樣的呢?讓我來簡單分析一下。 因為USB3.0包括USB2.0的引腳,

JDK新特性------介面定義加強(普通方法:defult和static方法)

為什麼會有介面定義加強? 因為介面中只有方法宣告沒有方法體,那麼就說明子類需要實現抽象方法,如果有很多子類實現的方法體相同,那麼就有很多相同的程式碼,但是在java中不建議出現相同程式碼,這時在JDK1.8之後,解決辦法是:介面中把相同方法實現。 介面定義如何加

【紅鷹微信crm系統】微信客服crm系統原始碼介面定義

微信CRM客服通訊介面 手機客戶端上傳的通知類訊息  8、手機客戶端微信上線通知   9、手機客戶端微信下線通知   10、微信個人號新增好友通知  11、微信個人號移除好友通知  12、微信好友發來聊天訊

菜雞的Java筆記 第三十五 介面定義增強

介面定義增強        在java從一開始到現在介面之中的核心組成部分:抽象方法與全域性常量,但是隨著技術的不斷髮展,使用者在使用過程之中發現了有一些問題        如果說現在有一個

j-link介面定義及實際使用

使用j-link下載程式或者線上除錯的時候,有兩種模式:JTAG和SWD 可以在keil中選擇: 下面是兩種模式下,分別用的介面引腳: 推薦使用SWD模式,因為更省引腳而且除錯功能不受影響。 在S

arm模擬器介面定義

友情部落格連結 http://blog.csdn.net/sailor_8318/article/category/323453 http://blog.csdn.net/z2007b http://www.cs.bham.ac.uk/~exr/lectures/ops

Android AIDL(介面定義語言)簡單理解和基本使用方法

public class MainActivity extends Activity implements OnClickListener { Button btnBind, btnPlay, btnPause; IMyService mBinder; // 介面的一個引用 boolean

DLL介面的實現(COM結構思想)二

程式碼的實現部分如下: 介面標頭檔案 IUnknowService.h #include<iostream> #include<string> using namespace std; #ifdef _EXPORTING #define CLAS