我很难找到有关如何在 Windows 中简单地链接库的信息。
Linux 似乎有这些可爱的 gcc 选项(来自这里)
gcc MadgwickAHRS.c -o MadgwickAHRS
而我必须在 Windows 中使用这样的东西(从这里):
gcc -c -DBUILDING_EXAMPLE_DLL MadgwickAHRS.c
gcc -shared -o MadgwickAHRS.dll MadgwickAHRS.o -l,--out-implib,MadgwickAHRS.a
第一个给了我这个错误:
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../libmingw32.a(main.o):main.c:(.text+0xd2): 未定义参考“WinMain@16”
第二个,这个错误:
gcc.exe: MadgwickAHRS.a: 没有这样的文件或目录
(我不知道我应该如何.a
根据给出的说明制作文件)。我从来没有能够正确链接库,我一直在使用#include "file.c"
(that has a #include "file.h"
) 而不是#include "file.h"
仅仅因为它有效。但我想学习“正确”的方法,看看我的 Cython 代码是如何覆盖我的 .c 代码的……我想是时候尝试别的了。
如果你想帮助我解决我的 Cython/numpy 问题/告诉我它永远不会起作用,我也会附上它。我的代码还没有得到很好的注释/编写,所以就是这样......但它应该显示我正在尝试使用我的新链接库/共享对象事物的最基本想法。
我似乎无法找到粘贴代码的好方法,所以我只从 pastebin 中包含它。这主要是从他的网站上获取的 Madgwick 的作品(链接是代码)。
以下是 pastebin“链接”:
GCC 版本 4.5.2
Windows 7的
蟒蛇2.6
编辑:
我试过了
gcc -shared MadgwickAHRS.c -o MadgwickAHRS.o
得到了我的 MadgwickAHRS.o,写了一个快速的 main.c
#include "MadgwickAHRS.h"
int main (void) {
MadgwickAHRSupdate(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);
MadgwickAHRSupdateIMU(0.0,0.0,0.0,0.0,0.0,0.0);
return 0;
}
然后运行这个
gcc -c main.c -o main.o
然后链接它们
gcc main.o MadgwickAHRS.o -lm -o main
得到我的exe并运行它没有错误。在继续之前还有什么我应该知道的吗?感谢您的答复。:)
编辑:感谢您的评论,我最终获得了工作链接。我用了
gcc -shared MadgwickAHRS.c -o MadgwickAHRS.o