Интерфейс 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 (что хорошо, если другой код не ссылается на этот код)