用DEF檔案從DLL中匯出C++類 (轉)
用DEF從DLL中匯出C++類
用DEF從DLL匯出一個,或用__declspec(dllexport)指令從DLL中匯出一類,想必大家已經很熟悉了,也經常使用著。這裡向大家介紹一種
用DEF檔案從DLL匯出一個類的方法。具體原理或為什麼就不廢話了,學會匯出後,再慢慢回味吧。這裡主要敘述操作步驟。
1。開啟VC6.0,新建一個" Dynamic-Link Library"工程,假設叫DefClass
,在“Dll kind”選擇介面中選擇“A simple dll project”
。
2。新建一個檔案,命名為DefClass.def,先暫時輸入下面的內容,並加入工程。
LIBRARY DefClass
EXPORTS
3。向工程中加入一個類CMath,並新增一個Add方法,使之看起來如下:
class CMath
{
public:
int Add(int a,in b);
CMath();
virtual ~CMath();
};
它的實現,你想如何由你決定,我做例子時,Add返回return a+b;
4。開啟工程的設定(settings)介面,選擇Link,勾選Generate mapfile。
5。Rebuild all工程。
6。在VC中開啟De或Release的*.map檔案(如果你工程名這DefClass,那就是DelClass.map)。
7。找到Math.obj,比如:
0001:00000080 to:??0CMath@@QAE@XZ">??0CMath@@QAE@XZ 10001080 f Math.obj
0001:000000c0 100010c0 f i Math.obj
0001:000000c0 100010c0 f i Math.obj
0001:00000130 10001130 f Math.obj
0001:00000170 10001170 f Math.obj
8。把1,4,5行的第2列複製到DefClass.Def檔案中,使之成為下面的樣子(序號自己指定)
LIBRARY DefClass
EXPORTS
@1
@2
@3
9。儲存所有檔案,再Rebuild All.
如果一切正常,那你的DLL中的類已經以序號匯出的了。這時再往CMath中加函式,如上從map檔案中找到函式的識別符號,並在def檔案中加一項
,分配一個序號給它。只要保持以前的匯出序號不變,用新編譯生成的DLL替換先前的DLL,以前的客戶仍然可以正常執行。
如何使用生成的DLL?
你可以把"Math.h"和"DefClass.lib"複製到客戶程式的工程目錄下,把"DefClass.dll"複製到客戶程式的輸出(debug/release)目錄下。 在客戶程式中#include "Math.h",在客戶程式的settings中加入對DefClass.lib引用。
CMath Math;
int nRet=Math.Add(2,3);
可以了嗎?不行來電喲
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-960888/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dll的def檔案與__declspec(dllexport)匯出函式方式比較Export函式
- .dll,.lib,.def 和 .exp檔案
- Dll中匯出類--Delphi實戰之一 (轉)
- C++關於DLL匯出模板類和模板函式C++函式
- 從Gitlab中匯出issue到Excel檔案中GitlabExcel
- 在ASP檔案中呼叫DLL (轉)
- DLL檔案中Form的使用 (轉)ORM
- MySQL匯入匯出檔案檔案MySql
- C++中的檔案輸入/輸出(2):讀取檔案 (轉)C++
- Java 通過Xml匯出Excel檔案,Java Excel 匯出工具類,Java匯出Excel工具類JavaXMLExcel
- 【Mysql】匯出資料到excel檔案中MySqlExcel
- oracle匯出資料到檔案中的方法 -- 轉自網路Oracle
- 容器中的 .net core應用,生成dump檔案並匯出
- 使用xml檔案,做資料的匯入,匯出 (轉)XML
- dll檔案是什麼 dll檔案用什麼軟體開啟
- linux C++ 共享庫匯出類LinuxC++
- 使用Allegro從brd檔案中匯出封裝及焊盤的方法封裝
- 在C++程式中匯出Word文件的方法(轉)C++
- laravel用phpWord匯出漂亮的word檔案LaravelPHP
- 從SQL Server匯出txt檔案匯入Oralce遇到毫秒問題SQLServer
- C#中DataGrid匯出Excel檔案C#Excel
- ffmpeg 匯出影片檔案中的音訊音訊
- (十一)Electron 匯入匯出檔案
- mysql 匯入匯出 sql檔案MySql
- MySQL匯入匯出平面檔案MySql
- 將Android程式從Eclipse中匯出成.APK可安裝檔案AndroidEclipseAPK
- java匯出Excel檔案JavaExcel
- java匯出CSV檔案Java
- Oracle 匯出txt檔案Oracle
- js 匯出檔案流JS
- 一個從EXE、DLL檔案中提取、存取圖示完整程式 (轉)
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- 【匯出匯入】% 在匯入匯出中的應用。
- 華表Cell檔案匯入匯出
- c++ IO類,檔案操作C++
- C++中的檔案輸入/輸出(5):二進位制檔案的處理 (轉)C++
- java中呼叫dll檔案的步驟Java
- 用3DMAX+DirectPanda外掛匯出.X檔案3D