我有一個用C#代碼構建的Dll,並且由於某些需要,我想將它用於C++代碼。在C++中使用C#dll時出現C2380錯誤
經過長時間的搜索,我找到了一個解決方案,並使用RegASM.exe從我的abcd.dll文件創建了abcd.tlb。
此文件的導入後,
#import "D:\\..\\abcd.tlb" raw_interfaces_only
當我建我的解決方案出現錯誤,
錯誤C2380:類型前面的 'Accepted_Bills'(構造函數返回類型,或非法重新定義當前類名?)d:.. \ abcd.tlh
當我搜索這個錯誤時,我開始知道一個結構,
struct __declspec(uuid("23dbd772-5aa8-3b5a-90a1-b19e4a052166"))
Accepted_Bills
{
long Denomination;
__int64 Accepted_Bills;
};
與其成員之一具有相同的名稱。這在C++中是不允許的。我正在使用Visual Studio 2010來編譯這個。
任何人都可以請幫我刪除這個錯誤。感謝提前了很多!
Thanx David!但是這是在導入「abcd.tlb」時在.tlh文件中自動生成的結構。我無法更改變量的名稱,因爲每次運行我的解決方案時,編譯器都會生成.tlh文件。 – Stuti
然後你必須停止自動生成它。 –
你能幫忙解決這個問題嗎?我已經試圖通過這種方式尋找解決方案。但直到現在還找不到。 – Stuti