我正在尝试在cygwin tutorial之后编译一个简单的dll。除了最后一步,我已经能够成功完成所有操作。当我执行命令时:

gcc -o myprog myprog.c -L./ -lmydll


我收到一条错误消息,指出未在该范围内声明hello()。我逐字阅读了本教程,但是我仍然无法编译该简单项目,并且对原因感到迷惑。

各个文件的代码如下:

(myprog.c)

int main(void){
    hello();
}


(mydll.c)

#include <stdio.h>
int hello(){
    printf("Hello World!\n");
    return 0;
}

最佳答案

该示例对我在Cygwin中的工作正常

armathew@3NJ2VQ1 /cygdrive/d/userdata/armathew/Desktop/WWWW
$ ls
mydll.c  myprog.c

armathew@3NJ2VQ1 /cygdrive/d/userdata/armathew/Desktop/WWWW
$ gcc -c mydll.c

armathew@3NJ2VQ1 /cygdrive/d/userdata/armathew/Desktop/WWWW
$ gcc -shared -o mydll.dll mydll.o

armathew@3NJ2VQ1 /cygdrive/d/userdata/armathew/Desktop/WWWW
$ gcc -o myprog myprog.c -L./ -lmydll

armathew@3NJ2VQ1 /cygdrive/d/userdata/armathew/Desktop/WWWW
$ ./myprog.exe
Hello World!


您正在使用什么Cygwin版本?我的是1.7.5

armathew@3NJ2VQ1 /cygdrive/d/userdata/armathew/Desktop/WWWW
$ uname -r
1.7.5(0.225/5/3)

10-06 13:39