2013-02-16 55 views
0

這裏一個錯誤會收到時編譯:嘗試編譯模塊Linux上用gcc

B-規格/ BS_Linux_Dynamic.cpp:57:11:錯誤:預期構造,析構函數,或類型之前轉換「(」令牌 化妝[1]:* [推出/ b規格/ BS_Linux_Dynamic.o]錯誤1個 化妝[1]:離開目錄`/home/mm/Плот/metamod-1.19/src」 化妝:* [所有]錯誤2

這裏是源: http://pastebin.com/rhpPrmHv

感謝您的回覆!

回答

3

的問題是在這裏:

__declspec(naked) void CheckProtocol_AsmHelper_LDyn() { 

這並不編譯,因爲__declspec(naked)是微軟的擴展,不支持gcc

Equivalent of __declspec(naked) in gcc/g++

+0

好的,當我將「_declspec(裸體)」更改爲「__attribute __(裸體)」我得到這個http://pastebin.com/JsDLRnEB – 2013-02-16 10:04:01

1

你爲什麼不使用asm()代替__asm{}?由於linux內核也是這樣做的,爲什麼不呢。另外,爲什麼你使用C++編寫內核模塊?

哦!並使用__attribute__((naked))

編輯:

你需要以一個分號結束每次調用asm()。另外,asm()將字符串作爲參數,因此您需要引用您的彙編代碼。您還需要使用\n\t來指示這些字符串中的製表符和換行符。

+0

好的,這裏的錯誤日誌 - http://pastebin.com/tEQcQypn 這裏編輯 - http://pastebin.com/g9s4JRee – 2013-02-16 14:25:47

+0

更新。對不起,忘了包含一些信息。 – cyphar 2013-02-17 04:22:23