게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[질문]C++에서 사용하던 함수포인터 C#에서 사용 문제
게시물ID : programmer_21417짧은주소 복사하기
작성자 : 빛나는_별
추천 : 0
조회수 : 613회
댓글수 : 3개
등록시간 : 2017/09/24 16:15:15
옵션
  • 본인삭제금지
  • 외부펌금지
 
안녕하세요 ㅠㅠ c++로 작성된 코드를 c#에서 사용해야하는 문제가 있어 며칠째 진행중인데 해결되지가 않네요 ㅠㅠ
 
c++ 코드에서는 함수포인터를 정의해 놓고
 
LoadLibrary를 사용하여 dll파일을 로드한 뒤
GetProcAddress를 사용하여 함수를 할당해주어
void 형식의 함수를
(함수포인터)(parameter1, parameter2) 이런 형식으로 사용합니다.
 
////해당 코드
typedef void (_stdcall *oupfuncPtr)(short portaddr, short datnum);
 
oupfuncPtr oup32;
HINSTANCE hLib;
 
hLib = LoadLibraryA("dll파일"); // 라이브러리 로딩
oup32 = (oupfuncPtr)GetProcAddress(hLib, "Out32");
 
 // use
 short portNumber = 1;
 short portData = 0;
 (oup32)(portNumber, portData);
 
 
 
이 부분을 c#에서 그대로 사용하기 위해서
"kernel32.dll"을 DllImport하여 LoadLibrary, GetProcAddress, FreeLibrary 사용하고
delegate이용하여 함수 포인터 선언까지는 오류나지 않고 성공한듯 했습니다.
 
그런데 이제 함수를 사용할 때 c++과 동일한 형식으로 (함수포인터)(parameter1, parameter2) 이렇게 사용하려고 하니 함수포인터 부분에서
'형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하십시오'오류가 나면서 사용이 되지 않습니다.
 
혹시 c#에서 사용할 때 다른 방식으로 사용하여야 하는건지요?ㅠㅠ
 
도움을 부탁드립니다. 제발 저를 퇴근시켜주세요
 
 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호