Microsoft MVP성태의 닷넷 이야기
글쓴 사람
슬픈단잠
홈페이지
첨부 파일
 

C++에서의 함수의 원형은
__declspec(dllexport)
int __stdcall FileHandling( DWORD uid, const char *cId, const char *pSrcFilePath, const char *pDestFolder, char szOutFiles[][260], int iStartTime, int iTimeLimit, BOOL bSkipVideo )

그리고 C#에서 선언한 함수의 원형은
[DllImport(DllName, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public unsafe extern static int FileHandling(System.UInt32 uid, string cid, string srcFilePath, string destFolder, IntPtr outFiles, int startTime = 0, int timeLimit = 0, System.Boolean skipVideo = true);

말씀주신 IntPtr을 이용하여 위와 같이 선언했습니다.
그리고 사용하는 곳에서는...

char[,] outFiles = new char[3, 260];
fixed(char* outFilesPtr = outFiles)
{
  try
  {
    IntPtr ptr = new IntPtr(outFilesPtr);

    bool succeed = FileHandling(uid, cid, filePath, dnaTargetPath, ptr, 0, 0, true) >= 0;
    File.Move(filePath, $"{outPath}\\{fileName}");
  }
}

이론상 2차원 배열이라 해도 단순히 연속된 메모리이니 예제 코드 등을 참고하면 충분히 될 것 같아 보였습니다.
그래서 위와 같은 코드를 작성한 다음에 확인을 해보았는데...

'System.BadImageFormatException: '프로그램을 잘못된 형식으로 로드하려고 했습니다. (0x8007000B)'

와 같은 에러를 뱉어내다보니 마샬링 이슈로 보여집니다.
혹시 다른 방법이 있을까요? 마샬링 이슈 하나로 계속 고생을 하고 있네요.








[최초 등록일: ]
[최종 수정일: 10/25/2022]


비밀번호

댓글 작성자
 



2022-10-25 01시00분
System.BadImageFormatException은 호출 측과 피호출 측 모듈의 플랫폼이 다른 것입니다. 예를 들어, c dll은 32비트로 빌드되었는데, c# 응용 프로그램은 64비트로 빌드된 경우입니다. 그걸 맞춰보세요.
정성태
2022-10-25 01시08분
[슬픈단잠] 전부 x86으로 빌드를 하기는 했는데... 어렵군요. ㄷㄷ
조언에 감사드립니다. 나머지는 제가 해결해야할 부분인 것 같네요. ㅠ
[guest]

... 16  [17]  18  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5513labe...6/11/20217489C# Winform 에서 Label에 동일한 Color를 넣었을 때 처리방법이 궁금합니다. [2]
55126/11/20218314xlwings 가 실행조차 되지 않습니다. ㅠㅠ [7]
5511Syong6/9/20217099User Control에 string array 속성 추가하는 방법 [4]
5510jay6/8/20216126string 문자열에 쌍따옴표(")를 넣고 싶습니다. [1]파일 다운로드1
5509한예지 donator6/3/20216074ExeccuteNonQuery 질문있습니다! [2]
5508최재남6/3/20216902마우스 이벤트 관련 질문 좀 드리겠습니다. [6]
5507한예6/2/20216061static과 스택오버플로우 질문있습니다. [5]파일 다운로드1
5506이창석6/1/20217484센서의 값을 받아서 PC를 통해 모니터링 하는 것을 만들고 있습니다. [1]
5505kss5/31/20216021.net5에서 소멸자가 어떻게 바뀐건가요? [1]
5503xing...5/24/20216374xingapinet 에 수정 요청 부탁 드립니다. [1]
5501한예지 donator5/23/20216215IProgress 사용법이 궁금합니다. [2]
5500한예ㅈ5/23/20218016비동기 코드 흐름 질문있습니다. [3]
5498곰장어5/21/20215920List에 static 변수를 추가했을때의 궁금증 [3]파일 다운로드1
5497지평선5/20/20217160윈도우 배율을 알 수 있을까요? [1]
5496cs린이5/20/20215791C# 8.0 질문입니다. [2]파일 다운로드6
5495Natie5/13/20215312객체를 생성과 동시에 초기화 하는 방법 [1]
5494지예예지5/13/20217580비동기 코드 흐름이 궁금합니다! [2]
5493xing...5/6/20215492xing api XQCSPAT00600 질문입니다 [4]파일 다운로드1
5492한예지 donator5/5/20215548FromCurrentSynchronizationContext 관련 코드 질문있습니다! [2]
5491조우성5/4/202110028WinForm과 WPF의 성능차이 비교한 자료가 있을까요? [4]
5490한예지 donator5/3/20216334UI 스레드의 Invoke 질문있습니다. [4]
5489저누4/28/20216934시작하세요 C# 9.0, 225페이지 구조체 관련 질문드립니다. [2]
5488종범4/27/20217192C# 비동기 함수 async, await 와 Task의 관계에 대해 질문 드립니다. [6]
5487진우4/27/20216506C# 엑셀 자동화 성능 향상 문의 [2]
5486지나가던...4/26/20216096닷넷 구현 코드 관련 질문 [2]
5485이재원4/17/20216450교재 315페이지 내용 질문 [3]
... 16  [17]  18  19  20  21  22  23  24  25  26  27  28  29  30  ...