我在Windows XP上使用gcc編譯器(MinGW)創建一個.dll庫libdir.dll
比我試圖構建一個使用該庫的程序。
我不想將該.dll文件放入System或System32文件夾中,也不想將其路徑設置爲PATH變量,我想要的是將該信息提供給程序本身。
我知道有一個-R
和-rpath
交換機可用,所以我要把它與其中之一連接起來。在Windows上使用-R和-rpath開關鏈接
首先-rpath:
GCC -L /路徑/到/ lib中-Wl,-rpath, /路徑/到/ lib中main.o -Ldir -o PROG比-R:
GCC -L /路徑/到/ lib中-Wl,-R, /路徑/到/ lib中main.o -Ldir -o PROG
成功鏈接到prog
,但是當我啓動程序Windows打印消息,它找不到libdir.dll
。
所以我的問題是什麼錯了,爲什麼路徑libdir.dll
不知道在運行時甚至當我使用適當的開關?
假設我有prog1和prog2,每個都包含它們自己的libdir.dll副本,並且它們都開始在庫中加載代碼的同時運行。內存中會發生什麼情況?有兩個副本加載或鏈接器數字有一個副本,並使用這兩個程序?
第二個問題是關於如何加載庫(任何操作系統)。連接器是否總是加載整個庫或只需要加載部分?例如,如果程序引用功能foo()
在庫中,鏈接器是否僅將該函數映射到內存中或整個庫第一?
可以喲你請一步一步向我解釋如何將它放在該.exe的工作目錄中,然後該怎麼做? – paleman 2010-07-17 17:25:09
你的意思是「如何創建一個快捷方式?」右鍵單擊桌面+新建。 – 2010-07-17 17:32:17
我以爲你說的是別的,新的頭腦。 – paleman 2010-07-17 17:53:08