나는 C++ 라이브러리 파일 (.lib)을 가지고 있습니다. 어떻게 C#에서 그 함수에 액세스 할 수 있습니까? 라이브러리 파일을 C++ DLL로 래핑하고 그 방법으로 함수를 노출 할 수 있다는 것을 읽었습니다. 그게 유일한 방법인가요? 나는 코드의 소유자가 아니기 때문에 옵션이 제한적이다.C++ .lib 라이브러리에 액세스 C#
답변
C++/CLI 어셈블리로 C++ lib를 래핑하십시오.
C++/CLI를 사용하면 관리되는 코드와 관리되지 않는 코드를 혼합하여 C#과 기본 C++ 사이의 다리 역할을 할 수 있습니다. 실제로는 매우 간단하고 상대적으로 쉽게 할 수 있습니다. 그러나 래핑 할 많은 클래스/함수가 있으면 지루할 수 있습니다.
Here이 하나의 예입니다.
C++ 라이브러리 파일 (.lib)에 직접 액세스 할 수 없습니다. 가장 좋은 방법은 관리되지 않는 코드 주위에 관리되지 않는 래퍼를 두는 것입니다. 참조 DllImportAttribute
. 당신은 당신의 C++ 라이브러리 주위에 관리되는 C++ 래퍼를 가질 수 있지만, 그것은 관리되지 않는에서 래퍼를 작성하는 것이 좋습니다 :
using System;
using System.Runtime.InteropServices;
class Example
{
// Use DllImport to import the Win32 MessageBox function.
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
static void Main()
{
// Call the MessageBox function using platform invoke.
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}
또한
주의 :
이 그 좋은 예는 MSDN 도움말 문서의 사용이다이다 C++ 코드.
DllImport는 * .lib를 가져올 수 있습니까? 나는 그것을 몰랐다 :) –
그래, 내 대답은 조금 성급했다. 나는 C++을 읽고 즉석에서 컴파일 된 어셈블리를 의미한다고 생각했습니다. 어떤 사람들은 어셈블리와 마찬가지로 용어 라이브러리를 사용하기 때문에 .lib 부분을 놓쳤습니다. –
- 1. Windows에서 Gnu C 라이브러리에 액세스
- 2. Windows Media Player 라이브러리에 액세스 C#
- 3. C/C++ 라이브러리에 대한 아이디어
- 4. C .lib 파일 플랫폼은 고유합니까?
- 5. C# lib install?
- 6. C++ 용 pdf lib
- 7. C++에서 OpenID lib?
- 8. Emacs의 C++ Lib/Headers
- 9. Cython으로 랩 C++ lib
- 10. C++ 라이브러리에 파이썬 임베드하기
- 11. 카이로 라이브러리에 C# 래퍼
- 12. Python에서 HIDAPI 라이브러리에 액세스
- 13. 건물 정적 C++ lib 디렉토리
- 14. C++에서 lib 파일의 c 함수 호출
- 15. C++ 응용 프로그램의 C++ lib RTTI
- 16. 헤더 파일 만 사용하여 C++ .lib 컴파일?
- 17. C++의 정적 라이브러리에 문제가 있습니다
- 18. C 언어의 .lib 파일 사용
- 19. IronPython에서 C# 라이브러리에 배열 전달
- 20. .Net 라이브러리에 C++ 라이브러리를 포함하십시오.
- 21. C#의 네이티브 라이브러리에 마샬링
- 22. 새내기 C 라이브러리에 대한 질문
- 23. Python의 로그 라이브러리에 해당하는 C++
- 24. Android NDK - C++ 라이브러리를 다른 C++ 라이브러리에 정적으로 연결하는 방법
- 25. iframe에서 jQuery 라이브러리에 액세스
- 26. 부스트 lib 링커 오류 Visual C++
- 27. [dll/lib/def/exp]에서 c/C++ 헤더 파일
- 28. C# 프로그램에서 C++ .lib 파일을 사용할 수 있습니까?
- 29. RealBasic 용 C/C++ 라이브러리에 대한 바인딩 만들기
- 30. 마샬링 문자열, C++ C 번호에 '변환이 라이브러리에 의해 지원되지 않습니다'
감사합니다. 이것은 원래의 C++ 라이브러리를 수정할 수 없기 때문에 제가 사용할 접근법입니다. –