當前位置:首頁 » 編程軟體 » 編譯連接庫

編譯連接庫

發布時間: 2022-01-23 21:04:59

㈠ 動態庫鏈接編譯

這里的動態的意思應該是模塊代碼是動態載入的
而不是隨著應用程序一起編譯
只要動態庫里的函數介面不變
應用程序就無需重新編譯
只需將動態庫重新編譯後替換掉舊的動態庫即可
如果動態庫的函數介面有變動
那麼應用程序就要重新編譯發布
這也是我的個人理解~~~

㈡ 易語言 編譯動態鏈接庫時至少必須提供一個被公開的子程序。

來張圖片

選中即可,一個dll文件內至少有1個或1個以上公開的子程序,如果沒公開的則其他程序無法調用。

㈢ 動態鏈接,靜態鏈接 動態編譯,靜態編譯 動態鏈接庫,靜態鏈接庫 這些兩兩間的區別是什麼呢

有點兒亂……,分數少簡單扼要的說說吧。
————————————
首先,傳統的編譯,也就是靜態編譯是把 源文件 翻譯成目標文件,這個是一次性過程,也就是你所謂的靜態編譯。
後來的Java和.NET等語言,首先編譯成中間形式,然後運行過程中根據需要編譯成本地代碼(注意這個過程不是一次性的,下次運行重新編譯),這個就是JIT(即時編譯)技術,從即時編譯發展出了動態編譯技術
————————————
(傳統的)編譯完成後,像C/C++、Fortran、匯編等語言,可以把多個目標文件合並到一個庫文件中,這個就是靜態庫。比如常說的庫函數printf就是libc裡面的函數。
如果有了啟動函數(main),main裡面使用了printf,就可以通過靜態鏈接技術,從libc中提取出printf所在的文件加入到可執行文件中,如果printf還需要其它函數,就繼續搜索並加入列表,直到形成一個閉包。這個就是靜態鏈接。
可是靜態鏈接有個明顯的缺點,如果每個程序都需要printf,那麼printf這個函數的代碼就會同時存在在每個程序中,這樣也太佔地方了吧。所以發明了動態連接技術,其實有兩種形式。無論哪一種,都是首先記錄下需要調用printf這個函數以及所在的動態庫,等到運行的時候再載入動態庫,從動態庫中找到真正的printf去執行。
由於,動態鏈接技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要動態鏈接庫。

㈣ 如何編譯 opencv動態鏈接庫

在一個項目中需要用到OpenCV,剛開始使用了OpenCV的動態鏈接庫,這樣,在移動可執行程序時還必須將OpenCV動態支持庫一起搬移,很是麻煩。所以,最終選擇OpenCV靜態鏈接庫,這樣程序移植運行就方便了很多。

需要編譯成靜態庫以便於應用程序鏈接。

網上有的教程中寫的在VC++2010下安裝OpenCV2.1時用到了TBB庫,而我在編譯鏈接自己的程序後需要用到TBB.dll。本人設計的目的就是要做一個獨立的界面程序,不需要攜帶其他第三方庫。經過一段時間的努力最終找到了編譯OpenCV2.1靜態庫的方法。

㈤ 在windows下如何通過命令行完成C++工程的編譯、鏈接、生成,如果需要鏈接系統自帶的動態鏈接庫怎麼辦

沒啥具體要求的話,直接往上堆就行了

cl hello.cpp yourlib.lib

需要更多的控制,查看 cl /? 吧,也可以查 MSDN

===
其他編譯器也類似,簡單情況可以直接堆文件名

====

library 文件不在默認的搜索路徑里的話,一般有兩種方法解決:

1 gcc 的話,使用 -L/path/to/lib

2 直接用全路徑來寫,編譯命令上加 /path/to/lib/file

比如

gcc -o hello.exe hello.c C:\xxx\msimg32.lib

另:.h 文件不應該出現在編譯命令里,編譯單元是按一個源碼文件 .c/.cpp 來算的

===========================
隱式鏈接DLL,鏈接時使用的是對應的 implib,一般也是以 .lib 文件存在

而 GCC(MinGW) 的話,擴展名為 .a

msimg32 的話,/MinGW/lib 已經有 libmsimg32.a 文件,可以直接加 -lmsimg32 選項來鏈接

=======

至於資源文件的話,MinGW 中用的編譯器是 windres.exe

命令為:windres -i xx.rc -o xx.res -O coff

然後鏈接成 exe 時加上 xx.res 文件名

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

makefile 其實就是便於組織編譯命令,實際使用的編譯命令還是需要自己寫的

㈥ 請教一個cmake編譯鏈接庫的問題

把工程C中的LINK_LIBRARIES(AAA BBB)這一行改成TARGET_LINK_LIBRARIES(CCC BBB AAA)並且放在最後一行就行了。

㈦ C++ 怎麼編譯 ARMV4T 的鏈接庫

恩、、不是這個問題導致的,先用C++的靜態調用試試看,如果路徑沒問題那建議你好好查查dll寫的是否正確。
對了,最好用VC6的Depends檢查一下,因為我碰到過自己寫的函數名在生成dll之後函數名前面出現了隨機的亂碼,這樣你調用的函數名就得包括那些亂碼了

㈧ 如何用gcc編譯生成動態鏈接庫*.so文件

生成動態鏈接庫的命令行為:
gcc -fPIC -shared -o libstr.so
當將main.c和動態鏈接庫進行連接生成可執行文件 的命令如下:
gcc main.c -L./ -lstr -o main或者gcc -o main main.c -L./ -lstr
測試是否動態鏈接,如果列出libstr.so, 那麼應該是連接正常了ldd main註:1)-L.:表示連接的庫在當前的目錄中。

㈨ 有個 c 文件,如何才能將其編譯成動態鏈接庫

有二個文件,一個 test.h, 一個 test.c

//test.h
#pragmaonce

#ifdef__cplusplus
extern"C"{
#endif

intadd(inta,intb);

#ifdef__cplusplus
}
#endif
//test.c
#include"test.h"

intadd(inta,intb)
{
returna+b;
}

編譯,生成動態鏈接庫:

#gcc-g3-Wall-fPIC-shared-olibtest.sotest.c
#ls-l
-rwxr-xr-x1rootroot14618Jul2413:44libtest.so
-rw-r--r--1rootroot63Jul2413:43test.c
-rw-r--r--1rootroot106Jul2413:43test.h

#nmlibtest.so
00000000002006e8a_DYNAMIC
0000000000200890a_GLOBAL_OFFSET_TABLE_
w_ITM_deregisterTMCloneTable
w_ITM_registerTMCloneTable
w_Jv_RegisterClasses
00000000002006c8d__CTOR_END__
00000000002006c0d__CTOR_LIST__
00000000002006d8d__DTOR_END__
00000000002006d0d__DTOR_LIST__
00000000000006b8r__FRAME_END__
00000000002006e0d__JCR_END__
00000000002006e0d__JCR_LIST__
00000000002008b8d__TMC_END__
00000000002008b8A__bss_start
w__cxa_finalize@@GLIBC_2.2.5
0000000000000620t__do_global_ctors_aux
0000000000000550t__do_global_dtors_aux
00000000002008b0d__dso_handle
w__gmon_start__
00000000002008b8A_edata
00000000002008c8A_end
0000000000000658T_fini
0000000000000468T_init
0000000000000600Tadd
00000000000004a0tcall_gmon_start
00000000002008b8bcompleted.6557
00000000000004c0tderegister_tm_clones
00000000002008c0bdtor_idx.6559
00000000000005d0tframe_mmy
0000000000000500tregister_tm_clones
熱點內容
安卓機哪裡看型號 發布:2024-03-29 15:59:40 瀏覽:281
cad解壓錯誤 發布:2024-03-29 15:01:45 瀏覽:79
存儲指令集 發布:2024-03-29 14:39:27 瀏覽:649
資料庫表刪除數據 發布:2024-03-29 14:39:26 瀏覽:367
出c語言整除 發布:2024-03-29 14:28:22 瀏覽:572
芬尼壓縮機 發布:2024-03-29 14:24:11 瀏覽:464
電腦數據實時上傳本地伺服器軟體 發布:2024-03-29 14:07:57 瀏覽:920
尋秦記源碼 發布:2024-03-29 13:56:17 瀏覽:496
linux的備份命令 發布:2024-03-29 13:41:22 瀏覽:383
csgo建議什麼配置 發布:2024-03-29 13:31:44 瀏覽:980