Jednym z łatwych sposobów wywołania C ++ jest utworzenie zestawu otoki w C ++ / CLI. W C ++ / CLI możesz wywoływać niezarządzany kod tak, jakbyś pisał kod natywny, ale możesz wywoływać kod C ++ / CLI z C # tak, jakby był napisany w C #. Język został zasadniczo zaprojektowany z interopem w istniejących bibliotekach jako jego „zabójcza aplikacja”.
Na przykład - skompiluj to za pomocą przełącznika / clr
P / Invoke to fajna technologia i działa całkiem dobrze, z wyjątkiem problemów z ładowaniem docelowego pliku DLL. Odkryliśmy, że najlepszym sposobem na zrobienie tego jest utworzenie statycznej biblioteki funkcji natywnych i połączenie jej z zależnym od niej projektem Managed C ++ (lub C ++ / CLI).
Technologia używana do tego nazywa się P / Invoke ; możesz wyszukiwać artykuły na ten temat. Zauważ, że służy do wywoływania C z C #, a nie C ++ tak bardzo. Musisz więc opakować swój kod C ++ w opakowanie C, które eksportuje biblioteka DLL.
Odpowiedzi:
Jednym z łatwych sposobów wywołania C ++ jest utworzenie zestawu otoki w C ++ / CLI. W C ++ / CLI możesz wywoływać niezarządzany kod tak, jakbyś pisał kod natywny, ale możesz wywoływać kod C ++ / CLI z C # tak, jakby był napisany w C #. Język został zasadniczo zaprojektowany z interopem w istniejących bibliotekach jako jego „zabójcza aplikacja”.
Na przykład - skompiluj to za pomocą przełącznika / clr
#include "NativeType.h" public ref class ManagedType { NativeType* NativePtr; public: ManagedType() : NativePtr(new NativeType()) {} ~ManagedType() { delete NativePtr; } void ManagedMethod() { NativePtr->NativeMethod(); } };
Następnie w C # dodaj odwołanie do zestawu ManagedType i użyj go w ten sposób:
ManagedType mt = new ManagedType(); mt.ManagedMethod();
Zapoznaj się z tym postem na blogu, aby uzyskać dokładniejszy przykład.
źródło
Nie znam wspomnianej biblioteki, ale ogólnie można to zrobić na kilka sposobów:
źródło
P / Invoke to fajna technologia i działa całkiem dobrze, z wyjątkiem problemów z ładowaniem docelowego pliku DLL. Odkryliśmy, że najlepszym sposobem na zrobienie tego jest utworzenie statycznej biblioteki funkcji natywnych i połączenie jej z zależnym od niej projektem Managed C ++ (lub C ++ / CLI).
źródło
Tak, nazywa się P / Invoke .
Oto świetna witryna z zasobami dotyczącymi używania go z interfejsem API Win32:
http://www.pinvoke.net/
źródło
Jasne, że tak. Ten artykuł jest dobrym przykładem tego, co możesz zrobić, aby zacząć.
Robimy to z poziomu C # na naszych urządzeniach z systemem Windows Mobile przy użyciu funkcji P / Invoke .
źródło
Technologia używana do tego nazywa się P / Invoke ; możesz wyszukiwać artykuły na ten temat. Zauważ, że służy do wywoływania C z C #, a nie C ++ tak bardzo. Musisz więc opakować swój kod C ++ w opakowanie C, które eksportuje biblioteka DLL.
źródło
Czy rozważałeś Apache Thrift?
http://thrift.apache.org/
Wydaje się, że to bardzo zgrabne rozwiązanie.
źródło