**:
參考文章:①②
因為對ia32彙編格式不熟悉 - -! ,所以寫了一些用c內嵌gnu彙編的**來獲取cpu的資訊,想用vc來做介面,c函式用mingw在windows平台編譯,完事遇到乙個問題,gcc編譯出來的dll檔案vc無法識別,於是昨天晚上和今天下午都在查詢資料,下面是我整理來的,不知道這樣用合不合適啊,不合適你們砸我,謝謝,
步驟:1,首先編譯c,根據mingw官網來的,當然它那個後邊有乙個c#的範例(但是用不上啊)。
?
1
gcc -wall -shared source.c -o destination.dll
說明:-wall 顯示所有的警告訊息。
-shared 聯結器將生成共享目標**,該共享庫可在執行時動態連線到程式形成完整的可執行體。
這個檔案可以放在windwos的path目錄中,或者mingw中,大概以後經常用到的。
?
1
pexports destination.dll -o > destination.def
3,然後有def檔案生成lib檔案
?
1
lib /machine:ix86 /def:destination.def
執行後生成兩個檔案 destination.exp destination.lib
4,修改標頭檔案,因為是在c++裡面呼叫c函式,所以要通知編譯器使用c的呼叫約定,使用extern 「c」 {} 。
extern "c"
5,在c++檔案中新增**
#pragma comment(lib, "destination.lib")
#include "source.h"
現在就可以正常編譯了。。。。。
VC 編寫 stdcall 方式的DLL
vc工具 vs2005 delphi 工具 delphi 7 vs2005 新建dll 新建 專案 儲存時選擇 dll testdll.cpp 定義 dll 應用程式的入口點。include stdafx.h ifdef managed pragma managed push,off endif b...
如何用vc編寫dll檔案
如何用vc編寫dll檔案 動態連線庫最大的特點就是能節省磁碟空間.當多個程序共享同乙個dll的時候,記憶體中只有乙個dll的 通過對映來使各個程序得以呼叫.1.用vc建立乙個win32 dll 我們利用vc編寫dll有幾種方法.如果用vc建立乙個win32 dll 工程.那這個工程就應該只匯出c 的...
VC編寫DLL幾種方法的簡介
可欣 動態連線庫最大的特點就是能節省磁碟空間.當多個程序共享同乙個dll的時候,記憶體中只有乙個dll的 通過對映來使各個程序得以呼叫.1.用vc建立乙個win32 dll 我們利用vc編寫dll有幾種方法.如果用vc建立乙個win32 dll 工程.那這個工程就應該只匯出c 的類或全域性變數.和全...