2010-11-23 4 views
0

게시 됨 : 월 2010년 11월 22일을 오전 2시 반 게시물 제목 : C++ 프로젝트
안녕하세요,링크 윈도우 .OBJ 파일/NASM

I의 어셈블리 객체를 연결하는 방법 어셈블리 프로그램을 내 C++ 프로그램과 연결하려고합니다. 나는 NASM을 사용하여 "nasm -fobj myprogram.asm"명령으로 .obj 파일을 생성합니다. .obj 파일이 생성되었지만이 프로젝트를 내 프로젝트와 연결하는 방법을 모르겠습니다. 링커 -> 종속성에 파일을 추가하려고했지만 외부 어셈블리 함수가 정의되지 않았다는 오류가 계속 발생합니다. 어쩌면 .obj 파일이 잘못된 디렉토리에 있습니다 (.cpp 파일과 함께 루트 프로젝트 폴더에 있음)?

누구나 어셈블리 언어 .obj 파일을 내 프로젝트에 연결하는 방법에 대한 간단한 설명을 제공 할 수 있습니까?

감사합니다, -KB

답변

0

당신이 어셈블러 코드에 적절하게 이름을 난도질해야합니다. IIRC에서 __stdcall은 기본적으로 32 비트 MSVC에서 사용되며 밑줄을 앞에두고 @ [인수의 바이트]를 추가합니다. 따라서 size_t strlen(const char *str), 컴파일 된 경우 __stdcall은 [email protected]으로 변경됩니다.

자세한 내용은 here 또는 here을 참조하십시오.

+0

NASM/GCC에 대한 유일한 정보는 ASM 파일의 함수 이름 앞에 밑줄 (_)을 추가해야한다는 것을 나타냅니다. 하지만 그건 도움이되지 않습니다. NetBeans에 파일을 올바르게 연결하는 방법을 알려주지 않는다는 느낌이 들지만, 저는 이것에 대해 매우 익숙하지 않기 때문에 완전히 확신 할 수는 없습니다. 링 바인드 종속성에 myprojgram.obj 파일을 추가하면 NetBeans 포럼 게시물에있는 지침을 따랐습니다. – enoculus

+0

@enoculous objdump (또는 플랫폼이 obj 파일을보기 위해 사용하는 것)를 사용하고 이름 objs에 있으며 여기에 게시자와 관련된 컴파일러 스위치, 코드에 포함 된 물건 등을 게시하고 내가 알아낼 수 있는지 확인할 것입니다. – JimR