안녕하세요 ㅠㅠ 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#에서 사용할 때 다른 방식으로 사용하여야 하는건지요?ㅠㅠ
도움을 부탁드립니다. 제발 저를 퇴근시켜주세요