我有一個懷疑,你沒有真正試圖問你問什麼。
您示例中的.dll文件只是一個共享庫。您可以使用GCC鏈接到共享庫。唯一的問題是你所說的圖書館:
// Stage 1: Build and link the library:
gcc -c -o mylib.o mylib.c // Compile
gcc -shared -o mylib.dll mylib.o // on Windows
gcc -shared -o libmylib.so mylib.o // on Linux etc.
命名約定實際上只是一個約定。我們鏈接程序:
// Stage 2: Build and link your application:
gcc -c o main.c main.cpp // Compile
gcc -o main main.o mylib.dll -lm -lfoo -lgdi32 // Windows
gcc -o main main.o libmylib.so -lm -lfoo // Linux
gcc -o main main.o -lmylib -lm -lfoo -L/opt/mylibs // Alternatively
因此,如果代碼是完全在你的手中,你只要先構建庫,然後對你的項目聯繫起來。
如果您確實意味着庫源代碼不可用,並且您只有Windows二進制文件,那麼情況會變得非常棘手。例如,二進制格式甚至不兼容。
你碰到了你的頭,但我仍然有一個問題給你。該DLL是使用VB6編譯器創建的。這不是創建一個Windows二進制文件嗎?爲什麼這仍然可以使用gcc鏈接? – Peretz
在Windows下,作爲GCC一部分的鏈接器使用Windows二進制格式,因此它可以讀取任何Windows DLL(全部使用相同的二進制格式)。只要你只使用C函數,你就相對安全,因爲C ABI非常穩定。如果您嘗試使用C++類庫,則可能會遇到麻煩。 –
Linux下會發生什麼?我可以使用gcc鏈接DLL嗎? – Peretz