尝试使用gcc编译用C编写的简单DLL。
尝试了许多教程,但即使我将文件剥离到基础知识也无法编译。
test_dll.c
#include <stdio.h>
__declspec(dllexport) int __stdcall hello() {
printf ("Hello World!\n");
}
尝试使用命令
编译它gcc -c test_dll.c
失败,获得此输出
test_dll.c: In function '__declspec':
test_dll.c:3:37: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'hello'
__declspec(dllexport) int __stdcall hello() {
^
test_dll.c:5:1: error: expected '{' at end of input
}
^
gcc版
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
答案 0 :(得分:1)
由于您在Linux上进行编译,gcc
将Linux作为目标。
您要做的是针对Windows的交叉编译。这意味着您将需要一个交叉编译器。可用于Ubuntu Linux的是mingw。
您可以使用
进行安装apt-get install gcc-mingw32
然后你可以用
编译gcc-mingw32 -c test_dll.c
进一步编译成dll需要
gcc-mingw32 --shared test_dll.o -o test_dll.dll
然后可以在Windows上使用此dll。