导入C#或C++;Delphi中作为COM对象的DLL

导入C#或C++;Delphi中作为COM对象的DLL,c#,c++,delphi,dll,com,C#,C++,Delphi,Dll,Com,我对德尔福很陌生。我们尝试将C++或C语言的DLL导入Delphi。我们的要求是将库作为COM对象导入。由于DLL中有多个类和结构,我们不希望它P/调用这些方法。 我们试图用C++/C#和MFCActix(ocx组件)构建一个DLL。 我一直在按照以下链接创建DLL: 并使用此链接()导入我创建的TLIB。 我创建的所有DLL都到达了我在Delphi中创建对象的停止点 我在C#中创建的是: 我们尝试了两个选项来调用导入的类型库 program CSharpDemo; uses com

我对德尔福很陌生。我们尝试将C++或C语言的DLL导入Delphi。我们的要求是将库作为COM对象导入。由于DLL中有多个类和结构,我们不希望它P/调用这些方法。 我们试图用C++/C#和MFCActix(ocx组件)构建一个DLL。 我一直在按照以下链接创建DLL:

并使用此链接()导入我创建的TLIB。 我创建的所有DLL都到达了我在Delphi中创建对象的停止点

我在C#中创建的是:

我们尝试了两个选项来调用导入的类型库

program CSharpDemo;

uses comobj, CSharpSampleLib_1_0_TLB;
var
  objCsLib1:ICSharpCom;
  objCsLib2:OLEVariant;

begin
  objCsLib1:=CoCSharpCom.Create; // Method 1
objCsLib2:= CreateOleObject('CSharpSampleLib.CSharpCom'); //Method 2
end.
方法1给出: 方法2给出:

我们确保该库已注册,并在Wow6432Node>CLSID>

我希望这是创建对象的正确方法。我可以知道这里缺少了什么吗?

-(VS)项目选项>应用程序>程序集信息>使程序集COM可见选中

-(VS)是否选中项目选项>生成>注册COM互操作

-使用RegAsm.exe注册?

-(VS)项目选项>应用程序>程序集信息>使程序集COM可见是否选中

-(VS)是否选中项目选项>生成>注册COM互操作


-使用RegAsm.exe注册?

错误消息足够清楚,不是吗?@DavidHeffernan感谢您的评论。但是我想我不清楚这个错误,我看到这个类是注册的,但是系统没有这样做。为什么不呢。顺便说一句,你似乎没有初始化comanywhere@geisterfurz007. 谢谢我会确保下次错误信息足够清楚,不是吗?@DavidHeffernan谢谢你的评论。但是我想我不清楚这个错误,我看到这个类是注册的,但是系统没有这样做。为什么不呢。顺便说一句,你似乎没有初始化comanywhere@geisterfurz007. 谢谢下次我会确定的谢谢。是的,我做了这些来构建DLL。COMVisible标志在课程名称中给出。谢谢。是的,我做了这些来构建DLL。COMVisible标志在类标题中给出。
program CSharpDemo;

uses comobj, CSharpSampleLib_1_0_TLB;
var
  objCsLib1:ICSharpCom;
  objCsLib2:OLEVariant;

begin
  objCsLib1:=CoCSharpCom.Create; // Method 1
objCsLib2:= CreateOleObject('CSharpSampleLib.CSharpCom'); //Method 2
end.