我有一个遗留的C ++应用程序,使用/ clr调用托管dll(用C#编写)
该应用使用#import
来引用ADOX。该DLL也引用了ADOX。
在我向C ++项目中添加对dll的引用之前,一切都很好。在编译与STDAFX.CPP
和msadox.tli
相关的msadox.tlh
时,我会收到数百个错误。一些错误指的是接口重新定义等等,其他错误指的是尝试编译tlh和tli,好像它们是托管代码一样。
我在#pragma managed(off)
周围尝试#import
但没有成功。
如果相关,则#import
使用libid:...
方法。
我不明白这种冲突是如何发生的以及我能做些什么来克服它。请帮忙!
答案 0 :(得分:0)
通过从C ++项目引用中删除dll引用并在单个cpp文件中使用#using "my_managed.dll"
(唯一引用dll的文件)来解决问题。
然后编译器警告我,它无法从dll中导入一些ADOX符号,因为它们已经被定义(由#import ...
)但是因为它们只是警告我可以使用#pragma
关闭它们并忽略它们。
现在一切正常!