2012-10-18 40 views
2

我在查找關於如何簡單地在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從他的網站上所做的工作(鏈接是代碼)。

下面是引擎收錄 「鏈接」:

MadgwickAHRS.c

MadgwickAHRS.h

MadgwickAHRS.pyx

MadgwickAHRS.pxd

setup.py

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 
+0

沒有'-c'嘗試拳頭命令的.o文件,但與'共享'。 Anyld可能會指定outfile。 –

+0

另外,嘗試在單行中寫入構建命令,以查看該構建是否可行,然後將其分解爲多個步驟。順便說一下,MinGW的哪個版本是這樣的? – vvnraman

回答

0

我想你應該指定你正在構建控制檯應用程序。看來,你編譯窗口applcation。試着找出如何改變項目的類型。 WinMain - 是Windows應用程序的入口函數。 可能是這個標誌將幫助您--subsystem,控制檯

+0

我其實只是試圖將c函數包裝到python中。 – David

0

謝謝尼克拉斯 - [R

gcc -shared MadgwickAHRS.c -o MadgwickAHRS.o 

創建我需要