이번 포스팅에서는 Visual Studio 환경 설정을 설명하도록 하겠다.

 

1. Project 생성

시작화면에서 New-Project를 클릭한다.

 

Visual C++에서 DLL를 선택하고 보기 좋은 프로젝트 이름을 바꿔준다.

2. 빌드 환경설정

보통 윈도우 64비트 환경에서 빌드되기 때문에 이를 가정하고, 환경설정을 진행한다.

Build-Configuration Manager 클릭
Debug x64선택

3. 프로젝트 속성 설정

프로젝트에서 Library와 Link되어 컴파일하거나 디버그되어 빌드되는 과정을 진행하기 위해 다음과 같은 설정이 필요하다.

Debug-프로젝트 속성 클릭
All Configurations, All Platforms 클릭
.dll을 .arx로 변경
Additional Include Directories 클릭
기존 설치했던 Objectarx inc폴더 설정
Code Generation에서 Multi-threaded DLL 선택(Autocad에서 여러 명령어를 등록하고, thread하는 방식이기 때문)
Linker에서 Addtional Library Directories 클릭
위와 같이 lib 폴더 설정
Linker-Input 클릭

  • rxapi.lib
  • acdb23.lib
  • accore.lib
  • ac1st23.lib

위와 같은 Library 파일을 추가
Linker-Command Line에서 /ignore:4099 추가

4. 디버깅 설정

해당 프로젝트를 디버깅하며 오류난 곳을 수정하기 위해 디버깅 설정을 진행한다.

 3-1)Command의 acad.exe파일을 통해 디버깅시 Autocad가 실행될 수 있도록 한다.

 3-2)Attach Yes를 통해 프로그램 프로세스가 Autocad 프로그램과 연동될 수 있도록 한다.

 3-3)Debugger Type을 Native Only로 변경한다.

 

마지막으로 적용 버튼을 클릭한다.

4. Helloworld Test

 

#include "stdafx.h"

#include <tchar.h>
#include "rxregsvc.h"
#include "acutads.h"
#include "accmd.h"

#pragma comment(linker,"/EXPORT:acrxEntryPoint")
#pragma comment(linker,"/EXPORT:acrxGetApiVersion")

void myCommand()
{
    acutPrintf(_T("\nHelloooo!"));
}

extern "C"
AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
    switch (msg)
    {
    case AcRx::kInitAppMsg:
        acrxDynamicLinker->unlockApplication(appId);
        acrxRegisterAppMDIAware(appId);

        //register the commands
        acedRegCmds->addCommand(L"MYGROUP",
            _T("MYCOMMAND"),
            _T("MYCOMMAND"),
            ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET,
            myCommand);
        acutPrintf(L"\nExample Application Loaded");
        break;
    case AcRx::kUnloadAppMsg:
        acedRegCmds->removeGroup(L"MYGROUP");
        acutPrintf(L"\nExample Application Unloaded");
        break;
    case AcRx::kLoadDwgMsg:
        // initialize lisp functions here
        break;
    case AcRx::kUnloadDwgMsg:
        // remove lisp functions here
        break;
    }
    return AcRx::kRetOK;
}

프로젝트 Main문에 위와 같은 코드를 복붙해서 빌드를 진행한다. 그러면 .arx가 생성이 되고, 이를 Autocad 실행 후 Appload 명령어를 통해 Upload한다.

그렇다면 위 코드에서 MYCOMMAND 명령어가 등록되게 되며, 사용자가 MYCOMMAND 명령어를 치면, Helloooo!가 프린트된다.

 

※ .arx파일은 빌드 후 Visual Studio 하단에서 경로를 확인할 수 있다.

반응형

+ Recent posts