Как бы я импортировал шаблон функции с помощью PInvoke? - PullRequest
1 голос
/ 03 марта 2010

В моем коде C # мне нужно вызвать функцию из C ++ Dll, которую я написал. Функция является общей. Итак, я должен просто импортировать это так:

[DllImport("myDll.dll")]
private static extern TypeName functionName<TypeName>( int arg1, int arg2 );

Это правильный синтаксис? Спасибо.

1 Ответ

4 голосов
/ 03 марта 2010

Это не может работать, нет компилятора C ++ основного потока, который делает шаблоны экспортируемыми. Более того, шаблоны создаются экземпляром компилятора C ++ посредством стирания типов, подобно тому, как работают дженерики Java. Другими словами, конкретные вызываемые функции должны быть встроены в DLL компилятором C ++. Они больше не являются общими.

В качестве альтернативы вы можете написать класс ref на языке C ++ / CLI. Это создает настоящий универсальный класс .NET, который может использоваться любым языком .NET, поддерживающим универсальные.

...