2013-10-31 47 views
-1

我使用C#語言並開發COM DLL,並通過COM使用C++調用託管代碼成功。 然後我通過obfuscar混淆了C#com dll,不包括接口和com導出的類。 而我使用C++調用COM DLL,創建COM對象時失敗。 爲什麼?是否有其他類或界面應排除? 謝謝。C#com obfuscated在C++項目中不工作

regasm /u yourassembly 

然後用/ TLB選項重新註冊再生成TLB文件,然後編譯新的TLB的C++項目:

+0

我不會這麼想的。什麼錯誤到底? typelib版本是否改變了?你是否使用反射調度接口? – Rup

+0

調用CoCreateInstance函數失敗時,找不到typeLib。 – kinsung

+0

好的 - 這是否意味着obfuscar剝離或混淆了資源?你可以手動從原始版本中提取typelib並在之後將其添加回來,或者讓obfuscar保持原樣? – Rup

回答

0

首先註冊的舊程序集使用的命令(不混亂之一)文件。該命令是:

regasm /tlb yourassemly 

注意,regasm.exe是在C:\ WINDOWS \ Microsoft.NET \框架{.NET版本號},不同版本的.NET都有不同的regasm.exe,也有這兩個32位和64位版本,你必須使用正確的。

+0

我也會嘗試你的方法,謝謝。順便說一下,我應該注意到CoCreateInstance函數的返回結果是E_NOINTERFACE。 – kinsung

+0

這是解決方案! – kinsung

相關問題