Используйте библиотеки C ++ на C # - PullRequest
0 голосов
/ 23 января 2011

Я сам работаю над проектом, потому что производительность важна, я хочу написать некоторую часть кода на c ++ и хочу вызывать коды c ++ из C #. Я напишу библиотеку c ++ и хочу написать оболочку C #, как я могу это сделать? Есть ли у вас предложения, где я должен начать учиться? [любой сайт, любая ссылка, любая книга]

Спасибо!

Ответы [ 3 ]

3 голосов
/ 23 января 2011

Пример:

Windows:

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

Linux:

[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
0 голосов
/ 11 апреля 2011

Посмотрите на C ++ / CLI. Я бы порекомендовал C ++ / CLI в действии Нишанта Сивакумара. Кроме того, проверьте эту ссылку: http://msdn.microsoft.com/en-us/magazine/cc163855.aspx#S7

0 голосов
/ 23 января 2011

Вам нужно либо сделать импорт в стиле C для P / Invoke, например,

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

, либо исследовать CallingConvention.ThisCall.Благодаря искажению имен, если вы хотите быть переносимым на другие операционные системы, лучше выбрать первую.

...