【发布时间】:2017-10-10 16:02:24
【问题描述】:
尝试使用 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)
【问题讨论】:
-
你在为 windows 编译吗?
__declspec(dllexport)与 windows(导入库)中的特殊链接器语义有关,在其他系统上不存在。 -
我认为您需要回答这个问题:您的目标输出是针对 Windows 还是 Linux? Windows 使用 DLL,而 Linux(通常)使用 SO。您似乎使用的是 Linux (Ubuntu),所以您是真的想针对不同的操作系统 (Windows),还是想创建一个 SO 以在 Linux 上使用?
-
是的,我确实在为 Windows 编译。没有意识到我需要交叉编译。谢谢大家。