Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 제다큐어
- 주가분석
- 기업분석
- 스크리닝
- 반려견치매
- 중국증시
- WTI유
- 아모레퍼시픽
- Python
- 테슬라
- 퀀트
- 넬로넴다즈
- prometheus
- 경제위기
- 뉴지스탁
- WTI
- 코로나19
- 머신러닝
- 주식투자
- 지엔티파마
- 미국금리
- FOMC
- 마법공식
- 금리인상
- DSP
- 뇌졸중
- 국제유가
- 엘론 머스크
- 중국경제
- 유상증자
Archives
- Today
- Total
Data Analysis for Investment & Control
C++ dll의 CLR 프로젝트(C++/CLI)의 사용(3) 본문
반응형
:: Interface를 더 elegant 하게...
Native Code인 C++ dll과 C#을 연동시키는데 feasibility를 보는 것에 급급하다 보니, 구현된 코드가 세련되지 못하다.
우선, C++ dll의 LoadLibrary 부분의 기존 코드를 보면,
unmanangedLib = LoadLibrary(TEXT( "D:\\Work\\11. P3Suite\\P3Strategist\\Debug\\P3Core.dll"));
DLL 경로가 하드 코딩되어 있다!! 이걸 실행 파일이 위치하는 경로에서 읽어 오도록 수정하자.
// link unmanaged class
wchar_t path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);
std::wstring str_path(path);
str_path = str_path + L "\\P3IF.dll";
unmanagedLib = LoadLibrary(str_path.c_str());
// assign native method interface pointer
vfpSetCmd = ( int(*)(int ))GetProcAddress(unmanagedLib, "SetCmd");
vfpInit = ( void(*)(void ))GetProcAddress(unmanagedLib, "Init");
vfpGetRefCmdSize = ( unsigned int(*)(void ))GetProcAddress(unmanagedLib, "GetRefCmdSize");
위의 GetCurrentDirectory(MAX_PATH, path)를 수행하면, 리턴되는 경로는 dll이 위치한 경로와 다르다. 솔루션의 프로젝트 메인이 C# 프로젝트라서, proj_name\bin\debug... 의 경로에 exe 파일이 존재하기 때문이다.
따라서, 솔루션의 debug 경로에 위치를 지정하기 위해서는 C# 프로젝트 속성 설정 페이지를 열고 위치를 새로 지정해야 한다.
반응형
'Code > C++:C#:MFC' 카테고리의 다른 글
[C++/STL] 디렉토리 내 파일 리스트 얻어오는 함수 (0) | 2016.01.13 |
---|---|
[Tip] DLL에서 다이얼로그 사용 시, 다이얼로그 창이 뜨지 않는 문제 (0) | 2015.05.18 |
[Tip] LPCWSTR(유니코드) <-> LPCSTR(멀티바이트) 쉽게 변환하기 (0) | 2015.05.18 |
C++ dll의 CLR 프로젝트(C++/CLI)의 사용(2) (0) | 2014.04.18 |
C++ dll의 CLR 프로젝트(C++/CLI)의 사용(1) (0) | 2014.04.17 |
Comments