2013-02-16 57 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