link text의 Q/A는 내가 찾고있는 것에 매우 가깝지만 C#을 시작하고 진행하기위한 최선의 방법에 대해 약간의 힌트가 필요합니다.C# - C 상호 운용성
자바 스크립트로 PalmPre/webOS 용으로 작성한 앱이 있는데 그 중 일부는 성능을 위해가 아니라 휴대 가능하도록 C로 작성되었습니다. Lear Jet 성능 계산을 수행합니다.
webOS 세계에서 C 코드 (플러그인)는 자체 프로세스로 진행되며 JS가 프로세스를 시작하기 위해 C 코드를 호출하고 (기본 코드를 사용하여) C가 시작점을 등록 할 수있는 방법이 있습니다. 그런 다음 JS는 인수가있는 진입 점을 호출 할 수 있고 C 코드는 계산을 수행 한 다음 C가 표시 문자열을 JS에 대한 문자열로 반환합니다. C 코드에는 그래픽이없고 동적 메모리 할당 등이 없습니다. JS GUI 코드를 C#으로 변환하고 JS에서 동일한 작업을 수행하기 위해 C 코드를 사소한 수정 (# if)으로 사용하고 싶습니다. Pre가 지금합니다.
Answer 1/option2 나는 그가 "당신의 프로젝트 대 소비자 프로젝트"가 의미하는 바를 이해하지 못했고 어떻게/왜 그것이 하나의 dllimport이고 하나는 dllexport라는 것을 의미하는지 이해하지 못했습니다. DLL이 없으면 C 코드 루틴 만 있습니다. 그의 'PublicFunc'를 내 C 루틴으로 바꿔야 만하는 것처럼 보입니다. 맞습니까? 그리고 나는 그것이 'params'라고하는 많은 주장을 할 수 있을까요? 그러나 반환 형식이 지정되지 않은 경우 C#에 대한 응답을 어떻게 반환합니까? 'returntype'은 예약어입니까? 예를 들어 장소 소유자입니까? 아니면 DLL이 없기 때문에 트랙을 벗어나나요? BTW, C 코드는 테스트를 위해 DOS 프로그램으로 독립 실행 형으로 실행되도록 컴파일하는 모드를 가지고 있습니다.
이 작업을 수행하는 방법을 보여주는 간단한 예제 코드가 있습니까? MS VS 2010 Express를 지금 다운로드하고 있는데 아직 설치하지 않았습니다. 아마도 거기에 뭔가가있을 것입니까?
TIA!
"귀하의 프로젝트"로 그는 C/C++ DLL 프로젝트에 대해 이야기하고 있습니다. 및 "소비자 프로젝트"는 DLL을 사용할 사용자 프로젝트입니다. 그의 예에서는 소비자가 DLL을 가져 오기 위해 C++을 사용한다고 가정하지만 소비자는 비슷한 (그러나 다른) 가져 오기 메커니즘을 가진 C#입니다. http://msdn.microsoft.com/en-us/library/aa984739%28VS.71 % 29.aspx –
또한 C#을 사용하려면 C 코드의 DLL 내보내기가 필요합니다.'returntype'은 예약어가 아닙니다. 수출을 위해,'MYPROJECTAPI (int) foo();'는이 원본에 확장한다 :'extern "C"int __stdcall __declspec (dllexport) foo();'. 리턴 타입이'__stdcall __declspec'보다 먼저 나오지 않기 때문에'returntype' 매개 변수는 어리석은 짓입니다. 실제로 매크로에서 param을 모두 제거하고 다음과 같이 사용할 수 있습니다 : MYPROJECTAPI int foo();' –
만약 내가 올바르게 읽고있다면, msdn 링크는 C++ -> C 링크를위한 것입니다. C# -> C에 대한 마법의 마법 주문 –