У меня есть собственная библиотека C ++, для которой я создал управляемую оболочку в CLI / C ++.Это работало хорошо, пока я не решил расширить его дополнительными подпространствами имен.Новое пространство имен не видно из моего проекта C # .NET.Вот похожая структура:
namespace A
{
namespace B
{
public ref class X {...};
public ref class Y {...};
public ref class Z {...};
}
}
namespace A
{
namespace C
{
public ref class X {...};
public ref class Y {...};
public ref class Z {...};
}
}
Когда я импортирую его в проект C # .NET, в браузере объектов я могу видеть как пространства имен AB, так и AC, но intellisense, а также компилятор говорит мне, что неттакое пространство имен, как «A.C».
Я попытался переименовать пространства имен и обнаружил, что любое пространство имен было переименовано последним, оно стало видимым, а другое стало невидимым.Как будто я переименовал AC в AD, и внезапно я смог получить доступ к AD, но больше не к AB.Затем я переименовал AB в AE, и внезапно AE стал видимым, а AD невидимым.
Что я делаю не так?
Обновление: Я удалил все выражения "using"из кода CLI / C ++ и разрешил необходимые зависимости локально (например, System :: String и т. д.), потому что я подозревал, что, возможно, способ, которым я использовал другие пространства имен, мог вызвать мои проблемы.Ответ - нет.У меня все еще есть та же проблема.
Обновление 2: Я дал себе ответ, потому что думал, что мне удалось решить эту проблему, но я удалил его в конце.Я думаю, что часть проблемы заключается в том, что я организовал вложенные пространства имен в подпапки, в которых имена файлов были точно такими же, поэтому компилятор учитывал только одно имя файла один раз.Я думаю, что рабочее решение было бы, если бы я объявил и определил оба вложенных пространства имен в тех же заголовочных и cpp-файлах, рядом друг с другом.Я попробую это позже.