![]() |
|
![]() ![]() ![]() |
|
Charlie |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.11.2009 Репутация: нет Всего: нет |
Мне необходимо было написать функцию на ассемблере и использовать её (объектный файл с ней) в коде С++ проекта Windows Forms на Microsoft Visual Studio Team System 2008.
Я делал это так: Visual Studio 2008 NASM integration In order to use nasm seamlessly in your VS2k8, follow the steps below. 1. First install nasm by running its installer 2. copy nasm.rules to c:\Program Files\Microsoft Visual Studio 2008\VC\VCProjectDefaults 3. Start Visual Studio 2008 4. go to Tools->Options->VC++ Directories 5. click on Show Directories for Executables 6. add C:\Program Files\NASM to the list of paths 7. Open a solution that you want to use NASM with 8. Right click on the project name and select Custom Build Rules 9. Check the box next to the NASM line 10. Add any .asm files to the project 11. click on build to test Содержание файла nasm.rules:
_________________________________________________ В *.asm файле функция объявлена так: global _myFunc@4 В файле Form1.h я написал следующее объявление:
Когда добавляю к проекту *.asm файл и запускаю построение проекта объектный файл скомпилированый nasm.exe появляется в папке D:\NASM\МОИ ПРОГРАММЫ\Visual Studio 2008\Projects\Memory Damp\Memory Damp\Debug __________________________________________________ Но при компоновке получаются следующие ошибки: Ошибка 3 error LNK2028: ссылка на неразрешенную лексему (0A00048D) "extern "C" struct myStruct * __stdcall myFunc(int)" (?myFunc@@$$J14YGPAUmyStruct@@H@Z) в функции "private: void __clrcall MemoryDamp::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@MemoryDamp@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Memory Damp.obj Memory Damp Ошибка 4 error LNK2028: ссылка на неразрешенную лексему (0A0004AE) "void __stdcall _com_issue_error(long)" (?_com_issue_error@@$$FYGXJ@Z) в функции "void __cdecl _com_util::CheckError(long)" (?CheckError@_com_util@@$$FYAXJ@Z) Memory Damp.obj Memory Damp Ошибка 5 error LNK2019: ссылка на неразрешенный внешний символ "void __stdcall _com_issue_error(long)" (?_com_issue_error@@$$FYGXJ@Z) в функции "void __cdecl _com_util::CheckError(long)" (?CheckError@_com_util@@$$FYAXJ@Z) Memory Damp.obj Memory Damp Ошибка 6 error LNK2019: ссылка на неразрешенный внешний символ "extern "C" struct myStruct * __stdcall myFunc(int)" (?myFunc@@$$J14YGPAUmyStruct@@H@Z) в функции "private: void __clrcall MemoryDamp::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@MemoryDamp@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) Memory Damp.obj Memory Damp Ошибка 7 fatal error LNK1120: 4 неразрешенных внешних элементов D:\NASM\МОИ ПРОГРАММЫ\Visual Studio 2008\Projects\Memory Damp\Debug\Memory Damp.exe Memory Damp ![]() ![]() ![]() Это сообщение отредактировал(а) Charlie - 4.11.2009, 20:08 |
||||
|
|||||
Charlie |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.11.2009 Репутация: нет Всего: нет |
Помогли на другом форуме.
Делаем вставку unmanaged кода в код managed:
Правда вот беда: При запуске программы появляется окно: Debug Assertion Failed ! Program: ...\...\Memory Damp.exe (моя программа) File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c Line: 1511 Expression: _CrtIsValidHeapPointer(UserData) ... Файл dbgheap.c : Line: 1511 _ASSERTE(_CrtIsValidHeapPointer(pUserData)); Странно, код который я написал ничего не делает пока я не нажму кнопку. А тут при запуске программы. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |