我可以从Linux客户端调用Windows DLL吗?

时间:2011-08-08 14:55:50

标签: c++ c dll shared-libraries

  

可能重复:
  Using Windows DLL from Linux

我在教程中找到了这个命令行。

gcc -o Client1 Client1.o CodeSample1.dll -lgdi32 -lm

并让我想知道何时可以从Linux客户端调用Windows DLL,或者从Windows客户端调用Linux .so文件。是否存在语言,名称装饰等限制?

由于

1 个答案:

答案 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二进制文件,那么情况就比较棘手了。例如,二进制格式甚至不兼容。