У меня есть некоторый код C ++:
namespace Compute {
class __declspec(dllexport) IProgressCB {
public:
virtual void progress(int percentCompleted) = 0;
};
double __declspec(dllexport) compute(IProgressCB *progressCB, ...);
}
, из которого я создаю «compute.dll» с включенной в Visual Studio 2008 поддержкой общего языка поддержки (/ clr).
Я хочу назвать этот код из C #.
Далее я создаю консольное приложение C # и добавляю compute.dll в качестве справочного материала.Затем я пытаюсь создать подкласс / реализовать IProgressCB:
public class Progress : Compute.IProgressCB
{
public void progress(int percentCompleted)
{
Console.WriteLine(percentCompleted + "% completed.");
}
}
Однако автозаполнение VS находит пространство имен «Compute», но не какие-либо классы или функции внутри него !?Когда я пытаюсь скомпилировать;он жалуется на то, что IProgressCB не является публичным.Если я напишу публично перед объявлением IProgressCB, он будет жаловаться на то, что он не может получить производный от запечатанного типа «Compute.IProgressCB».
Что я здесь не так делаю?Я хочу взять существующий код C ++, не вносить в него никаких изменений, но скомпилировать его с / clrc, а затем использовать его из C #.Разве это не возможно?