尝试使用gcc编译用C编写的简单dll失败

时间:2017-05-11 14:56:34

标签: c gcc dll declspec

尝试使用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)

1 个答案:

答案 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。