성능이 중요하므로 C++의 일부 코드를 작성하고 C#에서 C++ 코드를 호출하려고하므로 프로젝트에서 직접 작업하고 있습니다. 나는 C++ 라이브러리를 작성하고 C# 래퍼를 작성하려고하는데 어떻게 할 수 있습니까? 내가 어디에서 공부해야하는지 제안 해 줘? [모든 웹 사이트, 링크, 책]C# 라이브러리 사용 C#
고마워!
성능이 중요하므로 C++의 일부 코드를 작성하고 C#에서 C++ 코드를 호출하려고하므로 프로젝트에서 직접 작업하고 있습니다. 나는 C++ 라이브러리를 작성하고 C# 래퍼를 작성하려고하는데 어떻게 할 수 있습니까? 내가 어디에서 공부해야하는지 제안 해 줘? [모든 웹 사이트, 링크, 책]C# 라이브러리 사용 C#
고마워!
예 :
윈도우 :
[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 :
<DllImport("Comdlg32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Private Shared Function GetSaveFileName(ByRef lpofn As OPENFILENAME) As Boolean
End Function
/호출이
void World_Hello(World* self) { self->Hello(); }
처럼 사용하거나 CallingConvention.ThisCall을 조사하기. 이름 맹 글링 덕분에, 다른 OS로 이식하기를 원한다면 전자가 더 나은 선택입니다.
C++/CLI를 살펴보십시오. Nishant Sivakumar가 C++/CLI in Action을 추천합니다. 또한이 링크를 확인하십시오 : http://msdn.microsoft.com/en-us/magazine/cc163855.aspx#S7
조숙 한 최적화는 악합니다. C#이 너무 느릴 때까지이 작업을 수행하지 마십시오. (_hint_ : 거의 확실하지 않다.) – SLaks
다른 라이브러리를 호출하는 것이 그 라이브러리의 코드가 반복적으로 엄격한 루프 내에서 실행되지 않는다면 실제로 그렇게 빨리 진행될 것 같지 않다. SLaks가 말한 것처럼, C++ 및 P/Invoking에서 시간을 낭비하기 전에 C#에서 코드를 먼저 프로파일 링하십시오. –