#import ADOX与使用ADO的托管dll冲突

时间:2010-09-30 15:24:02

标签: c# c++ adox

我有一个遗留的C ++应用程序,使用/ clr调用托管dll(用C#编写)

该应用使用#import来引用ADOX。该DLL也引用了ADOX。

在我向C ++项目中添加对dll的引用之前,一切都很好。在编译与STDAFX.CPPmsadox.tli相关的msadox.tlh时,我会收到数百个错误。一些错误指的是接口重新定义等等,其他错误指的是尝试编译tlh和tli,好像它们是托管代码一样。

我在#pragma managed(off)周围尝试#import但没有成功。

如果相关,则#import使用libid:...方法。

我不明白这种冲突是如何发生的以及我能做些什么来克服它。请帮忙!

1 个答案:

答案 0 :(得分:0)

通过从C ++项目引用中删除dll引用并在单个cpp文件中使用#using "my_managed.dll"(唯一引用dll的文件)来解决问题。

然后编译器警告我,它无法从dll中导入一些ADOX符号,因为它们已经被定义(由#import ...)但是因为它们只是警告我可以使用#pragma关闭它们并忽略它们。

现在一切正常!