【发布时间】:2018-07-25 11:38:55
【问题描述】:
我正在尝试编写一个使用某些 Windows API 函数的程序集,特别是 GetConsoleWindow、MessageBox 和 ShowWindow。我通过外部_MessageBoxA@16 找到了如何在随机网站上使用 MessageBox。我用extern _GetConsoleWindowA@16对GetConsoleWindow进行了同样的尝试,但是在链接时出现错误:(.text+0x4): undefined reference to GetConsoleWindowA@16'。
我正在使用以下命令进行编译:nasm -f win32 message.asm -o message.obj,ld message.obj -o message.exe 函数名末尾的数字来自哪里? (例如@16)。还是我应该完全外部化其他东西?
【问题讨论】:
-
GetConsoleWindowA@16当然在任何地方都不存在。符号错误 -
它们以字节表示参数的大小。
GetConsoleWindowA不带参数,因此您可以省略数字或使用@0(不确定是哪一个)。 -
让问题保持有趣,并且可能对您有用,这样您下次就可以避免同样的错误。告诉我们您是如何决定使用 _GetConsoleWindowA@16
-
请注意,“externing”不是一个常用词,可能会让人感到困惑。
-
那个网站有多“随机”?换句话说告诉我们它是什么!因此(可能)反对票(虽然我没有 - 事实上我投了赞成票)。
标签: windows winapi assembly nasm