導航:首頁 > 版本升級 > 將工程生成dll文件

將工程生成dll文件

發布時間:2023-02-11 16:45:21

Ⅰ 如何編譯生成dll

使用VC下的cl和link手工創建dll並實現函數導入

1、創建dll頭文件
/*
* dllmain.h
*/
#ifndef _DLLMAIN_H
#define _DLLMAIN_H

int getNumber();

#endif

2、創建dll源文件:
/*
* dllmain.c
*/
#include "dllmain.h"

int getNumber()
{
return 10;
}

3、 創建def文件:
; export.def
LIBRARY MY_DLLMAIN ; MY_DLLMAIN 將成為生成的dll的名稱
EXPORTS
getNumber @1 ; 這個名稱即為函數的實際導出名稱 @1為函數的導出編號

4、生成dll文件:
cl dllmain.c /c
link /def:export.def /dll dllmain.obj

這時,工程中已經包含了 dllmain.h dllmain.c export.def dllmain.obj dllmain.lib dllmain.exp MY_DLLMAIN.dll 其中,後4個文件是編譯鏈接過程中生成的文件

5、創建dlltest.c:
/*
* dlltest.c
*/
#include <stdio.h>
#include "dllmain.h" //dll庫的頭文件

#pragma comment(lib,"dllmain.lib") //dllmain.lib即是上一步生成的文件

int main()
{
printf("%dn",getNumber());
}

6、編譯、鏈接dlltest.c
cl dlltest.c /c
link dlltest.obj

注意:這里dllmain.lib和dllmain.h應該和dlltest.c在同一個目錄中。此步的結果將生成 dlltest.exe

7、運行:
dlltest

這時,系統將載入my_dllmain.dll這個動態鏈接庫,將調用其中的getNubmer函數。

Ⅱ 怎樣正確生成DLL

創建DLL工程這里,我們為了簡要說明DLL的原理,我們決定使用最簡單的編譯環境VC6.0,如下圖,我們先建立一個新的Win32 Dynamic-Link Library工程,名稱為「MyDLL」,在Visual Studio中,你也可以通過建立Win32控制台程序,然後在「應用程序類型」中選擇「DLL」選項,

點擊確定,選擇「一個空的DLL工程」,確定,完成即可。

一個簡單的dll
在第一步我們建立的工程中建立一個源碼文件」dllmain.cpp「,在「dllmain.cpp」中,鍵入如下代碼

Ⅲ 用VS 如何由源代碼生成DLL文件

1:創建DLL工程

文件->新建->項目->visual c++->win32->win32控制台應用程序(win32項目也可以)

填寫項目名稱MyDLL->確定->下一步->DLL(附加選項 對空項目打鉤)->完成。

到這里DLL工程就創建完畢了,下面新建兩個文件MyDLL.cpp和MyDLL.h。

MyDLL.cpp內容如下:

testMyDLL.h內容如下

#pragmaonce


extern"C"_declspec(dllexport)intAdd(int&a,int&b);

現在可以編譯通過了,但是程序運行就報錯,還需要將MyDLL.dll復制到當前項目生成的可執行文件所在的目錄。(這一點非常重要)

這里需要注意testMyDLL.cpp文件中調用lib的這句話:

#pragmacomment(lib,"..\debug\MyDLL.lib")

這里需要指明lib所在的文件夾,當然我們也可以在生成dll的MyDLL工程中,指定lib和dll文件的輸出路徑,直接到testMyDLL工程下。

注意:如果只有dll文件,那麼必須在程序裡面調用LoadLibrary()函數才能使用,如果有lib文件,那麼有兩種方式可以馬上進行調用

Ⅳ 怎麼把lib文件生成dll文件

你好,把lib文件生成dll文件的方法:
1、在工程上點擊右鍵,然後選擇properties,進入後在左側的樹形目錄中選擇Linker->General
2、然後要保證Enable Incremental Linking (從上往下數是第四項)選項選擇(Yes (/INCREMENTAL));
Ignore Import Library(第六項)選擇No;
Link Library Dependencies (倒數第二項)選擇YES;
3、調整運行即可。

Ⅳ c++ 如何生成dll文件

在VC++中選擇新建一個Win32 Dynamic-Link Library。需要建立一個c/c++ head file和一個c/c++ source file並加入工程。頭文件中內容為輸出函數的聲明,源文件中內容為DllMain函數和輸出函數的定義。下面是一個最簡單的例子。

//dlldemo.h
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif

EXPORT void CALLBACK DllFoo(void) ;

//dlldemo.c
#include <windows.h>
#include "dlldemo.h"

int WINAPI DllMain (HINSTANCE hInstance, Dword fdwReason, PVOID pvReserved)
{
return TRUE ;
}

EXPORT void CALLBACK DllFoo(void)
{
MessageBox(NULL,TEXT("This function is exported from a DLL"),TEXT("DllFoo"),MB_OK) ;
return ;
}
頭文件預處理中的__declspec是微軟增加的「C擴展類存儲屬性」(C Extended Storage-Class Attributes),它指明一個給出的實例被存儲為一種微軟特定的類存儲屬性,可以為thread,naked,dllimport或dllexport. [MSDN原文:The extended attribute syntax for specifying storage-class information uses the __declspec keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute (thread, naked, dllimport, or dllexport).] 輸出函數必須指明為CALLBACK。 DllMain是dll的入口點函數。也可以不寫它。DllMain必須返回TRUE,否則系統將終止程序並彈出一個「啟動程序時出錯」對話框。 編譯鏈接後,得到動態鏈接庫文件dlldemo.dll和輸入庫文件dlldemo.lib。

Ⅵ 如何把VS的exe工程轉成dll工程

解決辦法:
1、下載缺少的dll文件,復制到c:\windows\system32文件夾下;
2、按win+r,輸入regsvr32 /s 該文件文件名XX.DLL,點擊確定;
3、彈出提示信息框,提示注冊成功,點擊確定即可。
4、用騰訊電腦管家電腦診所--搜 缺失dll文件--立即修理

閱讀全文

與將工程生成dll文件相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接