Следует использовать «__imp__ApiName @ N» или «_ApiName @ N»? - PullRequest
1 голос
/ 29 декабря 2011

Я сбросил .lib-файл Windows SDK (kernel32.lib) с DUMPBIN, вывод показывает, что для каждого имени API есть две «версии», например:

_ имп _ExitProcess @ 4

и

_ExitProcess @ 4

Итак, почему есть два одинаковых с разными названиями искажения? , Допустим, я хочу вызвать ExitProcess из NASM, какой из них мне следует использовать при объявлении EXTERN ?, моя практика показывает мне, что я могу вызвать любой из них, но я не знаю, какой из них "правильный" или "предпочтительный" придерживаться этого.

1 Ответ

2 голосов
/ 29 декабря 2011

Я думаю, что _imp_ версия предназначена для использования с __declspec(dllimport) в компиляторах Visual C ++ для предотвращения потенциальных конфликтов с кодом в том же модуле.

Вы не должны использовать этот факт явнов вашем коде - просто используйте оригинальную функцию, т.е. _ExitProcess@4.

...