Я пытаюсь импортировать .net DLL в C ++ проект.
Код C ++ содержит следующий код:
#include "stdafx.h"#import "RemoteAgentLibs.tlb" named_guids raw_interfaces_only
int main() {
HRESULT init = CoInitialize( NULL );
if (init != S_OK) return 1;
ImportedNamespace::_ClassNamePtr myclass;
myclass = new ImportedNamespace::_ClassNamePtr("ImportedNamespace.ClassName");
myclass->MyMeyhod();
}
Все работает нормально, пока я не проверю «Подписать сборку» в свойствах моего .NET проекта.
В проекте .NET я получаю предупреждение:
Предупреждение 3 «путь к dll» не содержит типов, которые могут быть не зарегистрированы для COM Interop.
Предупреждение 3 «путь к dll» не содержит типов, которые могут быть зарегистрированы для COM Interop.
В проекте C ++ я получаю сообщение об ошибке:
ошибка C2039: «MyMethod»: не является членом «ImportedNamespace :: _ ClassNamePtr»
Может кто-нибудь сказать мне, почему существует проблема с импортом dll со строгим именем?
или есть ли другой способ импортировать мою DLL в проект C ++ и добавить DLL в GAC
Ты смотрел SWIG? Я думаю, что это хорошее решение, вам просто нужно написать обертку для ваших нужд …
Других решений пока нет …