2010-04-28 2 views

답변

0

호출 할 함수가 들어있는 라이브러리에 링크해야하며, 함수를 정의하는 헤더를 포함시킨 다음 호출하면됩니다.

더 구체적인 질문이 없으면 그 이상의 것을 얻지 못할 것입니다.

+0

문제는 여기에 exe 파일이 생성되지 않았습니다. 내가 ++ EXE 관리되지 않는 C가, 헤더 (test.h)는 사용법 #include "stdafx.h를" { 공공 MyClass 클래스 아래 : \t INT MYTEST (INT 데이터); }; 아래 및 Test.cpp에 사용법 #include "STDAFX.H" 사용법 #include "test.h"이다 INT : MyClass에 MYTEST (INT 데이터) { 창 100; } int main (int argc, char * argv []) {\t \t return 0; } 이제 관리되는 C++ DLL에서이 MyTest() 함수를 호출하려고합니다. – Maestro

0

나는 P/Invoke를 봐야한다고 생각한다. 이 기술을 사용하면 관리되는 함수에서 DLL 또는 EXE로 내 보낸 unmanged 함수를 호출 할 수 있습니다. 예를 들어

: http://www.codeproject.com/KB/cs/essentialpinvoke.aspx

+0

Andreas에게 답장을 보내 주셔서 감사합니다. P \ Invoke는 exe가 아닌 dll에서 유용합니다. 특성 DllImport는 dll을 찾습니다. 하지만 전 exe 있어요. 나는 이것을 어떻게하는지 아무런 단서도 얻지 못하고있다. – Maestro

+0

다른 exe에서 exe에서 함수를 호출 할 수 없다고 생각합니다. – Betamoo

+0

exe에도 유용합니다. 하지만 문제의 기능을 exe 파일에서 내 보내야합니다. 일반적으로 exe 파일은 기호를 내 보내지 않습니다. exe ​​파일에 대해 개인 함수를 호출 하시겠습니까? –

0

관리되는/관리되지 않는 붉은 청어입니다. 호출 할 코드가 있으면 lib, DLL 또는 COM exe에 있어야합니다. 모든 COM 인터페이스를 구현하지 않는 일반 더블 클릭 실행 코드는 외부 코드 호출자에게 코드를 노출시키지 않습니다. 실행하고 싶다면 Process.Start를 사용하여 전체 exe를 시작할 수 있습니다. 그렇지 않으면 당신은 약간의 재 설계가 필요하게 될 것입니다. (이것은 다른 exe에 소스 코드가 포함될 것입니다.) 일반적으로 대부분의 기능을 lib 또는 dll로 가져오고, 원래의 exe 호출을 얻기 위해 그것의 일은 끝났고, 새로운 exe도 같은 라이브러리를 호출하도록하십시오.

C++/CLI를 사용 중이므로 COM Interop 또는 P/Invoke를 사용하지 마십시오. IJW는 더 쉽습니다 (올바르게 작동합니다.) lib에 대한 헤더, 링크를 포함하십시오. 끝난! 그러나 지금 보시다시피, lib를 얻는 것이 큰 첫 걸음이 될 수 있습니다.

+0

케이트 감사합니다. 내가하고 싶었던 방식이 불가능한 것 같습니다. 나는 지금 그것을 다시 건축 할 것이다. – Maestro

관련 문제