Интерфейс C++/CLI не виден из моего класса C#

У меня есть интерфейс в C++/CLI мне нужно реализовать в C#, но я его не видно. Однако у меня есть другие классы (абстрактные и конкретные, которые я могу унаследовать).

Мой интерфейс C++/CLI:

namespace MyNamespace { namespace MySubnamespace { 

public interface class ITestInterface
{
public:
    property bool FirstProperty
    {
        bool get();
    }

    property bool SecondProperty
    {
        bool get();
    }

};

}}

У меня есть тестовый проект, в котором я использую все функции в моей управляемой библиотеке, но интерфейс никогда не становится видимым.

Как я пытаюсь использовать его в своем проекте C# Test: (Я также пытался использовать его из проекта библиотеки классов, и он тоже не работает).

public class Test: MyNamespace.MySubnamespace.ITestInterface
{

}

Я получаю сообщение " Не удается разрешить символ" ITestInterface " "

Что мне не хватает?

Обновить

Я продолжал пробовать разные вещи, следуя комментариям к моему вопросу, и обнаружил, что если я включу свой файл.h в какой-то другой файл.h моего проекта C++/CLI, класс станет видимым. В основном я просто делаю:

#include "ITestInterface.h"

В одном из моих других.h файлов проекта C++/CLI и Class становится видимым для проекта C#.

Есть ли способ, которым я мог бы избежать этого?

1 ответ

Решение

C++/CLI похож на C++ в том, что только файлы.cpp компилируются напрямую. Заголовочные файлы компилируются только тогда, когда включены. Вот почему добавление #include для вашего интерфейса работает заголовок.

Есть несколько способов убедиться, что ваш код включен в класс C++/CLI:

  • Иметь файлы.h и.cpp (даже если файл.cpp включает только файл.h, которому он соответствует)
  • Имейте только включаемые файлы и затем включайте все заголовки в один файл.cpp (который может быть пустым кроме включаемых)
  • Иметь только файлы.cpp (что хорошо, если другой код не ссылается на этот код)
Другие вопросы по тегам