2014-01-17 113 views
0

我有一個項目,我一直在努力一段時間,並定期收到似乎來自Windows包含模糊符號錯誤。它們通常與.net命名空間相關。該項目包括託管和非託管C++代碼,我最近決定從使用文本文件登錄到通過ADO在非託管類中使用SQL服務器。在類的報頭我使用命名空間confilcts .NET C++

#import <C:\\Program Files\\Common Files\\System\\ado\\msado15.dll> rename("EOF", "AdoNSEOF") 

由MS所建議 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms675103(v=vs.85).aspx

在ADO帶來。這將編譯孤立罰款,但在管理部分包括,當我得到這樣的錯誤:

3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(216) : error C2872: 'IDataObject' : ambiguous symbol 
3>  could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(216) : error C2872: 'IDataObject' : ambiguous symbol 
3>  could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5948) : IDataObject' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(246) : error C2872: 'IDropTarget' : ambiguous symbol 
3>  could be 'c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3328) : IDropTarget' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDropTarget' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(246) : error C2872: 'IDropTarget' : ambiguous symbol 
3>  could be 'c:\program files\microsoft sdks\windows\v6.0a\include\oleidl.h(3328) : IDropTarget' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDropTarget' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(771) : error C2872: 'IMessageFilter' : ambiguous symbol 
3>  could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6328) : IMessageFilter' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IMessageFilter' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(771) : error C2872: 'IMessageFilter' : ambiguous symbol 
3>  could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(6328) : IMessageFilter' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IMessageFilter' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(1041) : error C2872: 'IServiceProvider' : ambiguous symbol 
3>  could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' 
3>c:\program files (x86)\microsoft visual studio 9.0\vc\include\comdefsp.h(1041) : error C2872: 'IServiceProvider' : ambiguous symbol 
3>  could be 'c:\program files\microsoft sdks\windows\v6.0a\include\servprov.h(103) : IServiceProvider' 
3>  or  'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' 

是否有某種方式來封裝衝突的命名空間,這樣它不會影響.NET?問題一直在出現,這裏似乎有些我不完全明白的地方。 非常感謝, 布魯斯。

回答

0

您需要刪除一些使用的名稱空間聲明並使用那裏的全名來避免衝突。