Ошибка компиляции Visual C ++ C2871 - <namespace>: пространство имен с таким именем не существует - PullRequest
0 голосов
/ 05 июля 2011

Я пытаюсь создать dll ManagedWrapper, который можно вызывать из приложения MFC, которое не будет компилироваться с использованием ключа / clr.В заголовке моего тестового MFC я объявил следующее:

#import "ManagedProxy.tlb"
using namespace ManagedProxy;

Когда я пытаюсь скомпилировать тестовое приложение MFC, я получаю ошибку C2871: «ManagedProxy»: пространство имен с этим именем не существует,Я уверен, что это сработало совсем недавно.Если я укажу неправильное имя файла tlb, я получу ошибку компиляции C1083, которая указывает мне, что файл tlb загружается правильно.

Почему Visual Studio теперь жалуется и почему он работал раньше?

Добавление:

Я только что узнал, что мой прокси перестал работать после того, как я изменил пространство имен на ManagedProxy.Я перекомпилировал управляемый проект, и у собственного приложения в качестве дополнительного пути включения есть папка Debug управляемого проекта, поэтому она должна ссылаться на последний файл tlb, но это не так.Я безуспешно пробовал абсолютный путь к проекту tlb, очищенному и перестроенному.

Почему tlb не является изменением пространства имен?

Добавление Использовал Object Browser, чтобы увидеть, что находится в TLB, а пространство имен ManagedProxy каким-то образом переименовано во что-то другое.Мне также не хватает пары интерфейсов, хотя они помечены как ComVisible (true).

Кто-нибудь, пожалуйста, помогите ....

TIA.

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Вы можете переименовать пространство имен при импорте.

#import "ManagedProxy.tlb" rename_namespace("ManagedProxy")
0 голосов
/ 06 июля 2011

Интерфейсы, которые не отображаются, вероятно, не помечены как общедоступные.

...