-1
在C#中,我在我的解決方案中有一個類和它的接口,並且我希望它們可以是COM可見的。Delphi 7在導入類型庫時不生成COM類
我:
創建的接口和類如下:
[InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("0D1ABB24-144E-4C88-A4A5-DC3ED0E61BEB")] [ComVisible(true)] public interface IMyInterface { // methods here } [ClassInterface(ClassInterfaceType.None), Guid("01AA5822-83D1-42C6-A578-C9A84AB836AA")] [ComVisible(true)] public class MyClass : IMyInterface { // implementation here }
(注意:他們都是COM可見)
生成一個GUID和通報了組裝信息:
[assembly: Guid("MY-GUID-HERE")]
與此命令行註冊它:
c:\regasm.exe /tlb MyAssembly.Dll
進口類型庫在Delphi 7.
產生的單元,但它不包含類和函數/過程。撥打CoClass.Create
返回了「未註冊的類」錯誤。
後來我用類庫創建了一個新的解決方案,執行上面的相同操作,以及生成的和我可以訪問它們的類/方法。
有沒有關於我可能錯過了什麼的提示?
你應該嘗試添加/ codebase選項到你的regasm命令。此外,您的DLL和您的Delphi項目需要同時爲32位或64位。 我通常嘗試通過使用VBS腳本來創建對象來測試DLL的註冊。如果您構建的是32位DLL,則必須確保使用c:\ windows \ syswow64中的cscript.exe或wscript.exe - 假設爲64位操作系統。 –
另外,使用Oleview嘗試打開生成的TLB文件,看看它是什麼樣的 - 假設你有visual studio。我不熟悉德爾福公司提供的工具可以做同樣的事情。 –