2012-04-26 4 views
6

제 3 자 Lisp 기반 프로그램 (ABC라고 부르겠습니다)과 직접 작성한 C# 프로그램 (DEF라고 부름)을 통합하려고합니다. ABC는 C 또는 Fortran에서 생성 된 어셈블리 만 호출 할 수 있습니다. 그래서 C 언어를 배우기 시작했고 ABC가 내 C dll을 호출하고 대신 "hello world"를 얻는 "hello world"테스트를 수행했습니다. 명시 적로드 및 GetProcAddress를 사용하여 C 코드에서 DEF dll을 호출하려고했습니다. 다른 C DLL을 호출하면 작동하지만 C# dll은 호출하지 않습니다. -> C -> C++ -> DEF (C#을) -> C++ -> C -> ABCC 코드에서 C# dll의 메서드를 어떻게 호출합니까?

ABC : 지금 내가 C를 배우고 ++와 C에서 C 번호를 호출해야하는 경우 ++이 좋은 호출 체인을 만들 수 있을까

이것이 유일한 방법이라면 누구나 몇 가지 예를 들어 도와 줄 수 있습니까?

+1

COM interop에 대한 C# DLL을 등록하셨습니까? 나는 과거에 해왔다. 가능하다. – SouthShoreAK

+0

질문이있는 경우 대답을 표시하는 것을 잊지 마십시오 (대답의 downvote 단추 아래에있는 고리를 확인하십시오). – sschrass

답변

2

this project을 사용하면 C# 함수를 기본 진입 점으로 내보낼 수 있습니다.

+0

나는 이것을 실제로 얻었다, 고마워! – AndersJH

3

.NET 어셈블리를 만들 때 어셈블리가 COM interop에 등록되도록 확인란을 설정할 수 있습니다. 이렇게하면 COM을 호출 할 수있는 모든 언어에서 에 액세스 할 수 있습니다. (내가 C 또는 C++을 만진 이후로 오랫동안 이되었습니다.)

구성 속성 -> 프로젝트 속성의 빌드 페이지. "COM Interop에 등록"을 찾으십시오.

+0

이것은 작동하지 않았습니다. C는 여전히 dll에서 프로 시저 주소를 찾을 수 없습니다. – AndersJH

관련 문제