COCCHome 发表于 2023-1-13 20:38:09

C语言编译dll

怎么把一个C语言文件编译为dll

isdkz 发表于 2023-1-13 20:42:59

网上一搜一大把

https://7dapi7.smartapps.baidu.com/pages/article/article?eid=e8cdb32bf36a3637052bad26&scene=10810087&from=&_swebfr=1&_swebFromHost=mibrowser

人造人 发表于 2023-1-13 21:22:33

对于gcc来说,这很容易
只需要添加 -shared 选项就可以了,就是这么的容易

$ ls
add.c
$ cat add.c
int add(int a, int b) {return a + b;}
$ gcc -g -Wall -shared -o add.dll add.c
$ ls
add.cadd.dll
$ file add.dll
add.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
$

COCCHome 发表于 2023-1-13 21:24:53

人造人 发表于 2023-1-13 21:22
对于gcc来说,这很容易
只需要添加 -shared 选项就可以了,就是这么的容易

Windows怎么操作

人造人 发表于 2023-1-13 21:29:46

COCCHome 发表于 2023-1-13 21:24
Windows怎么操作

这不是 windows ?

$ ls
add.cadd.dllmain.c
$ cat main.c
#include <stdio.h>
#include <dlfcn.h>

int main(void) {
    void *dll = dlopen("add.dll", RTLD_LAZY);
    int (*add)(int a, int b) = dlsym(dll, "add");
    printf("%d\n", add(1, 2));
    dlclose(dll);
    return 0;
}
$ gcc -g -Wall -o main main.c
$ ls
add.cadd.dllmain.cmain.exe
$ ./main
3
$

人造人 发表于 2023-1-13 21:31:30

用cygwin这个挺简单的环境不好吗?为什么要用那么复杂的环境?
看上面的演示,很简单对吧?

人造人 发表于 2023-1-13 21:34:31

既然你驾驭不了那么复杂的环境,那不如换一个简单的环境

人造人 发表于 2023-1-13 21:36:00

因为就是很简单么,在编译命令里面加一个 -shared 就可以了
就是这么简单

COCCHome 发表于 2023-1-13 21:51:42

人造人 发表于 2023-1-13 21:29
这不是 windows ?

哦哦
页: [1]
查看完整版本: C语言编译dll