日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux和Windows平台 动态库.so和.dll文件的生成

發布時間:2025/4/14 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux和Windows平台 动态库.so和.dll文件的生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux動態庫的生成

1、 純cpp文件打包動態庫

將所有cpp文件和所需要的頭文件放在同一文件夾,然后執行下面命令

gcc -shared - fpic *.c -o xxx.so;

g++ -std=c++17 - fpic *.cpp -o xxx.so;

[C++17標準,需要高版本gcc,本人采用gcc 8.2.0]

其中*.c代表所有的c文件,xxx.so中的xxx代表so動態庫的名字, -std=c++17代表采用C++17標準編譯。

2、 多個cpp文件和so庫一起打包成一個so

g++ -std=c++17 -fpic AFClassifier.cpp -shared -L. -lRandom -o test.so

3、 多個so打包為一個so

如果有兩個so,分別為 libRandom.so和libAF.so,并且在當前目錄下面,則執行下面命令:

g++ -std=c++17 -fpic -shared -L. -lAF -lRandom -o test.so

如果libRandom.so和libAF.so不在當前目錄,-L 后面要加上目錄,比如在當前目錄的下一層目錄,則:

g++ -std=c++17 -fpic -shared -L ./ -lAF -lRandom -o test.so

?

===========================================================

Windows動態庫的打包(dll)

1、 打開工程,在解決方案中打開屬性—》配置屬性:做以下修改:

“目標文件擴展名”:由默認的exe修改為dll

“配置類型”:選擇 動態庫dll

同時注意 配置 和 平臺 的版本。最好把release和debug下面的配置屬性都做上面的修改。

2、 在接口文件(也就是最重要的頭文件)添加兩處代碼:

1)

#ifdef LIBRARY_EXPORTS

#??? define LIBRARY_API __declspec(dllexport)

#else

#??? define LIBRARY_API __declspec(dllimport)

#endif

2)在調用函數前面加上“LIBRARY_AP”

當然 如果在接口函數前面直接寫上__declspec(dllimport)有時也可以,但是當遇到靜態變量或者靜態函數時,就不行了,我自己沒有真實測試過,看的博文這樣介紹的,博文連接如下:

【參考:https://blog.csdn.net/clever101/article/details/5421782】

3、 點擊生成解決方案,即可生成.dll文件。版本號要對應上前面的配置和平臺。輸出平臺顯示生成成功,即可查看生成的dll文件。

如果是X86平臺,則對應就是release和debug文件夾下面的dll文件

如果是X64平臺,則對應X64文件夾里面的release和debug文件中的dll文件。

===========================================================================

Windows動態庫dll文件的使用

1、 從別人那里獲取的動態庫最好要求x86,x64兩個release版本。方便不同版本的調試,雖然現在基本上用的都是X64。

2、 將動態庫dll和靜態庫lib,以及接口文件一起copy到工程里面,在調試的主函數中加入下面這行代碼:#pragma comment(lib,"XXX.lib"),然后將接口文件import進來。Dll文件只需要放在工程中即可,代碼中不需要管dll文件,因為lib文件已經告訴你的工程該怎么調用dll。

3、 運行,即可成功。如果不成功,查看平臺和配置是否在對著。

?

轉載于:https://www.cnblogs.com/xhslovecx/p/10613854.html

總結

以上是生活随笔為你收集整理的Linux和Windows平台 动态库.so和.dll文件的生成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。