導航:首頁 > 源碼編譯 > vs編譯成lib

vs編譯成lib

發布時間:2022-05-11 16:59:38

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

㈡ codeblocks下如何生成lib文件

編譯就行了 可以在Debug文件夾下找到你生成的DLL文件
DLL文件不能運行,如果要測試的話,需要新建一個Console項目或Win32項目來調用DLL中函數

㈢ win10 64vs怎麼編譯 libpng

1. 先下載 libpng(http://sourceforge.net/projects/libpng/files/)和libz(http://zlib.net/zlib-1.2.7.tar.gz),將libpng解壓,如C:\workspace\libpng\。
2. 將libz解壓,改名zlib放到libpng同級目錄,如C:\workspace\zlib。
3. 進入libpng\projects\visualc71\,用visual studio打開工程文件,方案中會有三個子工程:libpng, pngtest, zlib。直接編譯,不出意外會在Win32_DLL_Debug目錄下和Win32_DLL_Debug\ZLib目錄下生成zlib1d.dll, libpng15d.dll, libpng.lib和zlib.lib等庫文件。
4.若報錯,拷貝scripts/pnglibconf.h.prebuilt到源碼目錄,改名為pnglibconf.h

對於要用到這兩個庫的工程,主要需要做三件事:
1. C/C++常規->附加包含目錄中把包含png.h等頭文件的目錄加進來
2. 鏈接器->輸入->附加依賴項中加zlib.lib;libpng.lib。
3.通用屬性->VC++ 目錄->庫目錄中把放著zlib.lib和libpng.lib的目錄加進來。

㈣ vs編譯dll只生成了dll沒有lub

您想問的是不是「為什麼MS VS只生成dll,不生成lib」呢。
VS中使用模塊定義文件(.def),用VS創建了一個項目,要做一個dll,一切完了之後發現只生成了dll,沒有生成lib。
需要加入.deff的模塊定義文件,加上之後,就生成.lib了。都知道在寫DLL的時候,使用模塊定義文件(.def)可以防止DLL里的命名變更。

㈤ 如何在vs中使用lib

你的問題是個很大的問題,牽涉到代碼的重用、COM DLL的重用、Win32 API DLL的重用,等等。只能給你一些建議:
1)代碼級重用是做不到的。C++的代碼不能直接用在C#中。
2)很多現有的類庫,例如OpenGL、DirectX等等。這些類庫,都是以DLL形式出現的,要麼是Win32 API DLL,要麼是COM DLL。無論是哪一種,都可以在C#裡面通過Interoperation重用。網上有很多DLLImport和COM Interop的例子和文檔。
3)如果需要重用.lib和.h,就需要區別情況對待。如果.lib是純粹的API函數庫,那可以把.lib和.h編譯成.dll,就可以在C#裡面通過DLLImport來重用。如果.lib和.h裡面有自定的類,就比較麻煩,最好是把源碼摳出來(如果沒有源碼,就自己再在外麵包一層自己的類),然後用COM的方法重新包裝一下,再編譯成DLL,這樣就可以在C#裡面用COM Interop來重用。

unmanaged code是一個很大很大的話題,建議你慢慢體會慢慢鑽研,只有對Win32 API DLL、COM以及.NET中的Interoperation都已經熟悉了,才能融會貫通的處理代碼重用的問題。一口是吃不下大胖子的。

轉載

㈥ 你好,我現在用qt中要使用了一個vs2010編譯的.lib靜態庫。

對於C語言而言,用於連接dll的連接lib是可以通用的,dll也是可以通用的。但是靜態庫目前而言並不是通用的,一般的處理方式是編譯成dll,然後生成連接lib(a)庫,引入項目,或者使用libtdl動態載入dll文件。
靜態庫不可通用的原因是,基礎庫相差太多,objmp甚至都無法識別使用vc默認選項編譯出啦的obj文件格式。另外reimp不是用於這個用途的,是為dll的連接lib(a)文件提供轉換的。

對於C++而言,所有二進制代碼都是不可通用的,畢竟名稱修飾都相差甚遠。

㈦ vs如何生成dll的同時生成lib文件

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

㈧ 在vs2008中編寫dll如何生成lib文件

2 在Application Settings窗口,Application type中選擇 DLL; additional options中選擇Empty project。點擊完成
3 新建mydll.cpp和mydll.h兩個文件
4 在mydll.h裡面添加代碼:
extern "C" _declspec(dllexport) int Min(int a, int b);
5 在mydll.cpp裡面添加代碼:
#include "mydll.h"
#include <stdio.h
int Min(int a, int b){printf("Min is called");
if (a = b) return b;
else return a;}6 編譯程序7 把生的 .lib文件拷貝到另一個工程(要調用的DLL項目)的目錄下,把.dll文件拷貝到另一個工程(要調用的DLL項目)的debug目錄下
8 另一個項目的調用代碼如下:
#pragma comment(lib,"MyDll.lib")
extern "C"_declspec(dllimport) int Min(int a,int b);
#include <stdio.h
int main(){int a;a = Min(8,10);
printf("比較的結果為%d",a);return 0;}
vs2008默認生成dll,但不生成Lib文件,方法是:在所建工程上單擊滑鼠右鍵,在彈出的右鍵菜單中選擇添加--新建項....----模塊定義文件,在該模塊定義文件中寫導出函數表,單擊確定。然後在所建工程上單擊滑鼠右鍵,選擇屬性菜單,在彈出的屬性對話框中鏈接器--輸入--模塊定義文件中填寫剛才定義的def文件,然後再重新編譯即可生成LIB文件。
新建-》win32項目-》-》dll-》-》導出符號(這樣的話vs會自動幫你生產一些文件,然後自己可以在這個的基礎上修改下)
生成好了後會在相應的目錄下出現lib和dll兩個文件。
使用的時候把lib和dll以及h文件導出就可以了。
其它工程中使用的時候用下面兩種方式:
#pragma comment (lib,"MyDLL.lib")或者:HINSTANCE hInstLibrary = LoadLibrary(_T("MyDLL.dll"));//注意此處必須有_T()函數。
if (hInstLibrary == NULL){FreeLibrary(hInstLibrary);
如果在新建dll的時候選擇空白的文件(即不用vs自帶的幫你生成)的話,注意一定要自己手動添加def文件。

㈨ vs 命令行編譯靜態庫

_declspec(dllexport) void test_print(char* sz_input);
這是動態鏈接庫 -- dllexport ,dll是動態鏈接庫。
不是你說的靜態庫。
動態鏈接庫,應用程序調用它,編譯鏈接時要有.lib, 運行時要有.dll

Debug\ -- 給別的程序用,要用 Release\,不能用 Debug\

char * __ptr64 sz_input;
__ptr64 -- 32位機上,指針sz_input截斷為32位.
char * __ptr32 sz_input;
__ptr32 -- 64位機上,指針sz_input變32位

wchar_t,_MBCS -- 表明你要用雙位元組字元,那麼程序就不應當用 單位元組char 型。如果你要編的不是要用雙位元組字元,那麼 就不要 wchar_t,_MBCS。

閱讀全文

與vs編譯成lib相關的資料

熱點內容
郭麒麟參加密室完整版 瀏覽:318
單片機排線怎麼用 瀏覽:483
java字元串太長 瀏覽:868
python變數計算 瀏覽:115
網銀pdf 瀏覽:134
iponedns伺服器怎麼設置復原 瀏覽:405
深圳電力巡檢自主導航演算法 瀏覽:436
十二星座的布娃娃怎麼買app 瀏覽:321
反編譯打包地圖不顯示 瀏覽:92
沒有壓縮的圖片格式 瀏覽:468
斯維爾文件需不需要加密狗 瀏覽:300
柱加密區范圍在軟體中設置 瀏覽:706
紙質音樂壓縮教程 瀏覽:33
安卓手機健康碼快捷方式怎麼設置 瀏覽:477
程序員是怎麼發明的 瀏覽:175
新手程序員的職業規劃 瀏覽:175
c源程序通過編譯得到的目標文件 瀏覽:412
mpu6050控制單片機 瀏覽:751
雲伺服器租用什麼意思 瀏覽:150
程序員做中介怎麼樣 瀏覽:141