我在教程中找到了这个命令行。
gcc -o Client1 Client1.o CodeSample1.dll -lgdi32 -lm
并让我想知道何时可以从Linux客户端调用Windows DLL,或者从Windows客户端调用Linux .so文件。是否存在语言,名称装饰等限制?
由于
答案 0 :(得分:3)
我怀疑你实际上并没有试着询问你的问题。
示例中的.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二进制文件,那么情况就比较棘手了。例如,二进制格式甚至不兼容。