|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2014, 05:37 | #1 |
Регистрация: 20.01.2014
Сообщений: 7
|
Настройки VS2010. Оконный проект на asm x64. Вызов API.
Вот такой код:
Код:
Если по аналогии попробовать вызвать какую ни будь другую API, например, вставить в соответствующих местах: extrn GetModuleHandle: PROC ; и call GetModuleHandle ; То линкер выдает ошибку: 1>TempAsm.obj : error LNK2019: ссылка на неразрешенный внешний символ GetModuleHandle в функции WinMainCRTStartup 1>I:\Worker\Projekt\Visual Studio 2100\TempAsm\x64\Debug\TempAsm.exe : fatal error LNK1120: 1 неразрешенных внешних элементов Она из другой Dll? Все настройки в студии по умолчанию, только подключил Masm и добавил x64 конфигурацию. Проект создавался > Win32 Visual C++ > Пустой проект. Похоже, надо где-то что-то подключить? Последний раз редактировалось Klient.by; 20.01.2014 в 18:02. |
20.01.2014, 14:15 | #2 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Да, похоже, что вы не подключили какие-то библиотеки в проект. В настройках студии, на сколько я помню нужно указывать путь к либам...
|
20.01.2014, 14:17 | #3 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Во всяком случае копать надо в направлении подключения библиотек. это 100% - у меня помню такие же ошибки выскакивали, когда не указывал путь...
|
20.01.2014, 15:27 | #4 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 352
|
GetModuleHandleA для анси
GetModuleHandleW для уникода |
20.01.2014, 15:42 | #5 |
Регистрация: 20.01.2014
Сообщений: 7
|
GetModuleHandleA сработало!
1>Затраченное время: 00:00:12.03 ========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ========== Спасибо. Интересно, а как остальные, буду пробовать. |
20.01.2014, 18:41 | #6 |
Регистрация: 20.01.2014
Сообщений: 7
|
Так, хорошо, как в «золотой рыбке» корыто я получил.
Значит теперь, если компилятор, почти без каких-либо действий с моей стороны, узнает имена API, То нельзя ли что-нибудь сделать, чтоб он начал узнавать и типы данных Windows? А то сейчас, вот на такую строку: CommandLine LPSTR ? Он ругается вот такими словами: 1>_MASM: 1> Assembling [Inputs]... 1>TempAsm.asm(15): error A2008: syntax error : LPSTR 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Bu ildCustomizations\masm.targets(49,5 ): error MSB3721: выход из команды "ml64.exe /c /nologo /Zi /Fo"x64\Debug\TempAsm.obj" /W3 /errorReportrompt /TaTempAsm.asm" с кодом "1". |
20.01.2014, 21:34 | #7 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 352
|
|
21.01.2014, 12:06 | #8 |
Регистрация: 20.01.2014
Сообщений: 7
|
Насколько я понял, мне нужен файл windows.inc?
А где и что надо прописать в студии, чтоб она его подхватила? По ссылке лежит вот такой: WINDOWS.INC for 32 bit MASM (Version 1.25a) 22 October 2001 (Iczelion) Нашел еще вот такой: WINDOWS.INC for 32 bit MASM (Version 1.4c RELEASE April 2008) (Project WINDOWS.INC at the Masm Forum) Но они же все «for 32 bit»: LPSTR TYPEDEF DWORD Для x64 надо поменять на QWORD? |
21.01.2014, 12:35 | #9 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
INC лучше брать с http://masm32.com/masmdl.htm или форума
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
21.01.2014, 18:56 | #10 |
Регистрация: 20.01.2014
Сообщений: 7
|
Ну, въехал что надо чтоб подхватила:
Положить в папку с проектом, а в исходник прописать include windows.inc. Для x64 конфигурации его, получается надо просто полностью обнулить, и походу копировать туда только то, что понадобилось и подправлять где надо размерность. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
изменить код asm x32 под asm x64 за вознаграждение | Ecosasha | Фриланс | 2 | 28.11.2013 14:11 |
Delphi XE2 x64 asm написанная под x32 преобразование к x64 | Ecosasha | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 26.11.2013 22:45 |
ASM в VS2010 | Berlioz | Помощь студентам | 4 | 17.08.2012 11:41 |
Вызов C-шной printf из ASM-программы (tasm). Не работает. | Зойберг | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 04.11.2011 09:25 |
Вызов метода в asm вставке. | Mixasik | Общие вопросы Delphi | 3 | 20.02.2010 10:42 |