Я пытаюсь использовать DLL, написанную на C ++, из приложения C #. У меня есть сторонний исходный код для dll C ++ (физический движок Cyclone) и я не хочу вручную переносить его на C #.
В проекте C ++
Я изменил его для вывода DLL. Я изменил его, чтобы использовать флаг / clr. Я изменил его, чтобы использовать многопоточную отладочную DLL (/ MDd), потому что она была единственной, совместимой с / clr и также скомпилированной.
В проекте C #
Я добавил ссылку на dll. Я использую пространство имен циклона.
Сначала под пространством имен не было абсолютно ничего. Я думаю, это потому, что в коде C ++ все классы были объявлены без модификаторов доступа, а по умолчанию это private. Поэтому для класса «Частица» я изменил определение на:
public class Particle
{
//...
}
Теперь я могу успешно объявить переменную типа Particle из кода C #. Однако intellesense и объектный браузер сообщают, что Particle является структурой (?), И она вообще не содержит никаких методов. Код c ++ объявляет несколько методов после модификаторов доступа public:, так что я не знаю, в чем проблема.
Например,
public:
void integrate(real duration);
Что я делаю не так?