2011-01-23 3 views
0

성능이 중요하므로 C++의 일부 코드를 작성하고 C#에서 C++ 코드를 호출하려고하므로 프로젝트에서 직접 작업하고 있습니다. 나는 C++ 라이브러리를 작성하고 C# 래퍼를 작성하려고하는데 어떻게 할 수 있습니까? 내가 어디에서 공부해야하는지 제안 해 줘? [모든 웹 사이트, 링크, 책]C# 라이브러리 사용 C#

고마워!

+4

조숙 한 최적화는 악합니다. C#이 너무 느릴 때까지이 작업을 수행하지 마십시오. (_hint_ : 거의 확실하지 않다.) – SLaks

+0

다른 라이브러리를 호출하는 것이 그 라이브러리의 코드가 반복적으로 엄격한 루프 내에서 실행되지 않는다면 실제로 그렇게 빨리 진행될 것 같지 않다. SLaks가 말한 것처럼, C++ 및 P/Invoking에서 시간을 낭비하기 전에 C#에서 코드를 먼저 프로파일 링하십시오. –

답변

3

예 :

윈도우 :

[DllImport("User32.dll")] 
public static extern void SetWindowText(int h, String s); 



리눅스 :

[System.Runtime.InteropServices.DllImport("/root/Desktop/q3noclient/libnoclient.so")] 
static extern int DisconnectClient (string strServerIP, int iServerPort, string strClientIP, int iClientPort); 



C 번호 :

[DllImport("Comdlg32.dll", CharSet=CharSet.Auto, SetLastError=true)] 
private static extern bool GetSaveFileName(ref OPENFILENAME lpofn); 



VB.NET :

당신은 P에 대한 C 스타일의 수입을 만들기 위해 하나 필요
<DllImport("Comdlg32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _ 
Private Shared Function GetSaveFileName(ByRef lpofn As OPENFILENAME) As Boolean 
End Function 
0

/호출이

void World_Hello(World* self) { self->Hello(); } 

처럼 사용하거나 CallingConvention.ThisCall을 조사하기. 이름 맹 글링 덕분에, 다른 OS로 이식하기를 원한다면 전자가 더 나은 선택입니다.