我在查找關於如何簡單地在Windows中鏈接庫的信息時遇到了麻煩。在Windows中鏈接庫
的Linux似乎有這些可愛的GCC選項(從here)
gcc MadgwickAHRS.c -o MadgwickAHRS
而我不得不使用Windows這樣的事情(從here):
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): undefined reference to `[email protected]'
而第二個E,此錯誤:
gcc.exe: MadgwickAHRS.a: No such file or directory
(我不知道我怎麼做,從給出的指令.a
文件)。我從來沒有能夠正確鏈接庫,我一直在使用#include "file.c"
(它有一個#include "file.h"
),而不是#include "file.h"
只是因爲它的工作。但我想學習「正確」的方法來做到這一點,並看到我的Cython代碼似乎覆蓋了我的.c代碼......我認爲是時候嘗試別的東西了。
如果你想幫我解決我的Cython/numpy問題/告訴我它永遠不會工作我也會附上。我的代碼沒有太好的評論/書面,所以有這樣的...但它應該顯示我想要做什麼與我新的鏈接庫/共享對象的事情最基本的想法。
我似乎無法找出粘貼代碼的好方法,所以我只是從pastebin中包含它。這主要是Madgwick從他的網站上所做的工作(鏈接是代碼)。
下面是引擎收錄 「鏈接」:
GCC 4.5.2版本
Windows 7的
的Python 2.6
編輯:
我試圖
gcc -shared MadgwickAHRS.c -o MadgwickAHRS.o
得到了我的MadgwickAHRS.o,寫了一個快速主。ç
#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
沒有'-c'嘗試拳頭命令的.o文件,但與'共享'。 Anyld可能會指定outfile。 –
另外,嘗試在單行中寫入構建命令,以查看該構建是否可行,然後將其分解爲多個步驟。順便說一下,MinGW的哪個版本是這樣的? – vvnraman