導航:首頁 > 源碼編譯 > 怎麼將源碼寫成dll

怎麼將源碼寫成dll

發布時間:2024-01-05 19:41:10

㈠ 我現在想把自己寫的python模塊源代碼封裝成dll,然後在別的python腳本里調用,可以嗎

可以的,只要把python模塊轉換成dll模塊,利用Python自帶的ctypes模塊載入調用就行。

ctypes 是Python的外部函數庫。它提供了與 C語言兼容的數據類型,並允許調用 DLL 或共享庫中的函數。可使用該模塊以純 Python 形式對這些庫進行封裝。

ctypes導出了cdll對象,在 Windows 系統中還導出了windll和oledll對象用於載入動態鏈接庫。通過操作這些對象的屬性,你可以載入外部的動態鏈接庫。cdll載入按標準的cdecl調用協鋒滾議導出的函數,而windll導入的庫按stdcall調用協議調用其中的函數。

(1)怎麼將源碼寫成dll擴展閱讀:

載入調用DLL的相關方法:

1、載入DLL銀扒余

載入的時候要根據你將要調用的函數是符合什麼調用約定的。

stdcall調用約定:兩種載入方式

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

cdecl調用約定:也有兩種載入方式

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

其實windll和cdll分別是WinDLL類和CDll類的對象。

2、調用dll中的方法

載入dll的時候會返回一個DLL對象(假設名字叫Objdll),利用該對象就可以調用dll中的方法。 e.g.如果dll中有個方法名字叫Add(注意如果經過stdcall聲明的方法,如果不是用def文件聲明的導出函數或者extern 「C」 聲明的話,編譯器會對函數名進行修此旦改,這個要注意。)

調用:nRet = Objdll.Add(12, 15) 即完成一次調用。

㈡ 用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文件,那麼有兩種方式可以馬上進行調用

㈢ c怎麼生成dll文件

用 vc 6.0 下的cl.exe 和 link.exe工具,請讀下文:
聲明:下面這篇文章不是我寫的,源自:一個叫,有容乃大 的博客

如何手工編寫動態鏈接庫(windows dll)

1.本例介紹在命令行(Console)環境下製作dll的方法
2.讀者動手前,請確保在windows中安裝有編譯、鏈接工具和必要的函數庫文件。
3.本例使用C語言實現.
4.本例中使用路徑均為我機器上的絕對路徑,讀者需根據實際情況調整。

工具要求:

Microsoft的編譯器cl.exe
MIcrosoft鏈接器link.exe

dll製作步驟:
1.編寫dll函數實現源代碼hello.c

#include

int say_hello(char* name)
{
printf( "hello %s\n ", name);
return 1;
}

2.編寫dll函數輸出定義文件hello.def.

LIBRARY hello
EXPORTS
say_hello @1

3.編譯dll源碼,生成dll,lib文件.

3.1 新建命令行窗口
3.2 設置PATH �0�7 INCLUDE �0�7 LIB 3個環境變數.

SET PATH=K:\vcnet\vc7\bin;%PATH%
SET INCLUDE=K:\vcnet\vc7\include;%INCLUDE%
SET LIB=K:\vsnet\Vc7\lib;%LIB%

3.3 編譯hello.c

cd K:\Source\dllsample (hello.c和hello.def所在目錄)
cl /c hello.c

3.4 鏈接hello.obj,生成hello.dll,hello.lib兩個文件.

link /def:hello.def /dll hello.obj

4.測試dll函數.

4.1 編寫測試代碼 test.c

extern int say_hello(char* name);
int main(int argc,char** argv)
{
say_hello( "robbie ");
return 0;
}

4.2 編譯測試代碼test.c

cl /c test.c

4.3 鏈接test.obj和 hello.lib,生成可執行文件test.exe

link test.obj hello.lib

4.4 運行test.exe,屏幕輸出:

hello robbie

至此,一個dll構造完畢.

下面是我自己的一點補充:
如果要在c++下,或者win32 mfc下使用標准c寫的dll,必須把上面的聲明
extern int say_hello(char* name);改成:extern "C " int say_hello(char* name);

㈣ swmm怎麼編譯生成dll文件

如果需要改寫SWMM模型的源代碼,通常需要重新編譯生成新的動態鏈接庫,也就是常說的DLL,將SWMM 5源碼編譯為DLL的主要步驟如下:
1. 下載SWMM模型計算引擎源代碼後解壓,裡麵包含了模型代碼源文件。在對代碼進行必要的個性化修改後(如果不需要修改代碼,就完全沒有必要自己重新編譯了,安裝SWMM軟體後,安裝文件下就有計算引擎的DLL文件)就可以進行接下來的工作了。
2. 新建工程:以VC6.0為例,點擊文件/新建→工程;選擇」win32 dynmaic-link library」,輸入工程名字,如SWMM 5,在「位置」下輸入新工程存儲的路徑,點擊下方的「確定」;
3. 選擇「一個空的工程」,點擊「完成」;在彈出的對話框中點擊「確定」;
4. 「工程」菜單中選擇「添加到菜單」→文件,然後把文件夾中的包括頭文件在內的SWMM源文件(均以.c,.h後綴)全部添加到工程。
5. 在swmm5.c中取消define DLL前的注釋,使代碼為如下形式:
//#define CLE
//#define SOL
#define DLL
6. 選擇「組建」中的「編譯 SWMM5 」,在出現的對話框選擇「是」,然後再選擇」build」中的」execute swmm5″就完成了整個文件的編譯和執行。生成的debug文件夾中有swmm5.DLL。
7. 最後,把swmm5.def文件添加到工程中重新編譯一次。

㈤ 我有一套CS文件的源代碼,怎樣生成DLL

新建項目 - 類庫 把你的CS COPY里 然後右鍵項目 點生成
DLL文件在 這個項目文件夾DEBUG裡面
然後在用到的時候 就引用就行了!
不知道要的是這個不

㈥ 新手求教,如何將從ZLIB官網下下來的源代碼編譯成zlib.dll

詳細步驟如下:
1. 安裝zlib-1.2.3.exe和zlib-1.2.3-src.exe。
2. 打開VS2008,在選項的VC++目錄中,添加庫目錄\GnuWin32\lib。添加包含文件目錄\GnuWin32\include。
3. 新建一個Win32項目,類型選DLL,點上空項目。
4. 將\GnuWin32\src\zlib\1.2.3\zlib-1.2.3\下的所有頭文件和源文件(不包括子目錄)添加到項目文件平中。
5. 將\GnuWin32\src\zlib\1.2.3\zlib-1.2.3\win32下的zlib.def和zlib.rc兩個文件添加到項目中。

閱讀全文

與怎麼將源碼寫成dll相關的資料

熱點內容
建興app怎麼變成黑色了 瀏覽:49
文件壓縮包如何加密文件 瀏覽:183
2010提出的演算法 瀏覽:672
冰櫃壓縮機的壽命 瀏覽:105
辦公室采訪程序員 瀏覽:569
美橙雲伺服器購買 瀏覽:754
漢語詞典pdf下載 瀏覽:353
android公網ip 瀏覽:613
要塞1地圖放哪個文件夾 瀏覽:850
凡科建站怎麼弄伺服器 瀏覽:939
蘋果手機怎麼設置app播放 瀏覽:202
下載網站源碼用什麼瀏覽器 瀏覽:241
六線譜pdf 瀏覽:156
linuxmysqlsock 瀏覽:239
人教版數學pdf下載 瀏覽:460
文檔安全加密系統 瀏覽:492
數控銑床編程簡單數字 瀏覽:788
編程電纜如何重啟 瀏覽:121
myqq命令行發消息 瀏覽:365
日產逍客怎麼使用app升窗 瀏覽:503