為什麼我會考慮這個問題呢?因為我在使用java去呼叫一個c的lib庫的時候,彈出以下警告: D:\work\ideaworkpaces\jdk21Test001\src\main\java\lib\hello.lib: %1 不是有效的 Win32 應用程式。
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
然後我就在想是不是這個lib庫是64為導致的,眾所周知,java只能呼叫32位的。
接下來,我開始講解如何使用dumpbin。
第一步,找出dumpbin.exe檔案。
右鍵開啟檔案的所在位置。
當然我會直接告訴你dumpbin.exe檔案在那裡,就在:
第二步,配置一下,環境變數。
第三步,使用dumpbin.exe
dumpbin.exe /headers Hellolib.lib
結果為:
可以看出,該lib包為64位的。
32位的lib包長這樣:
當然dll庫也是一樣的:
dumpbin /headers HelloDll.dll
插嘴一句,其實gcc生成lib庫也是非常簡單的
以下是.h標頭檔案和實現.h檔案的c原始檔
先使用
gcc -c hello.c
生成hello.o檔案:
然後將.o檔案生成lib庫:
ar -cr hello.lib hello.o
結果圖:
如果只是想用gcc生成32位的lib庫的話,那就要在第一步的時候輸入:
gcc -m32 -c hello.c
然後輸入下面命令就行了。
ar -cr hello.lib hello.o
如果是想用gcc生成dll檔案,也是非常簡單的
在上面第一步的前提下,輸入以下程式碼就行了:
ar -cr hello.dll hello.o
結果圖: