Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何编写C来调用vb6代码?_C#_Vb6 - Fatal编程技术网

C# 如何编写C来调用vb6代码?

C# 如何编写C来调用vb6代码?,c#,vb6,C#,Vb6,我在VB6中有一个activeX DLL,我被要求用它运行一些测试。由于我不再使用VB6环境,我认为最好尝试编写一个简单的C程序来调用已注册的COM Dll。为此,我将DLL复制到c:\windows\system32中,使用regsrv32注册DLL,重新启动计算机,并将此DLL添加到COM中,因此我将其添加到项目中,并从项目中引用它。我从中创建了一个对象,并试图从中调用一个函数,但除了DllUnusedClass和DllUnused之外,没有其他可用的对象。如果您说您已经在项目中添加了对CO

我在VB6中有一个activeX DLL,我被要求用它运行一些测试。由于我不再使用VB6环境,我认为最好尝试编写一个简单的C程序来调用已注册的COM Dll。为此,我将DLL复制到c:\windows\system32中,使用regsrv32注册DLL,重新启动计算机,并将此DLL添加到COM中,因此我将其添加到项目中,并从项目中引用它。我从中创建了一个对象,并试图从中调用一个函数,但除了DllUnusedClass和DllUnused之外,没有其他可用的对象。

如果您说您已经在项目中添加了对COM dll的引用,现在我将右键单击该引用并选择“在对象浏览器中查看”。这将显示引用的dll中可用的类型


可能是您没有创建适当类型的对象,因此在对象浏览器中查看该对象有助于您决定要创建哪种类型的对象。

请确保VB6项目中您想要从.Net应用程序访问的任何类的Instance属性都设置为6-GlobalMultiUse,以便它在范围内


我已将Instance属性设置为默认的5-MultiUse,并测试了您的场景,遇到了与您描述的相同的问题。

您可以尝试使用反编译器查找可用的类。您不需要使用反编译器。使用Windows SDK附带的Ole类型库查看器。可用的东西是一个名为DllUnused的接口和一个类,NNetaply,我知道它有一个功能,我想调用它,但我不知道如何调用!哦,谢谢你,约翰。还有一个问题!添加到我的引用中的dll是NNetaply,但在对象浏览器中显示的是Iterop.NNetaply,我已经无法使用它,因为我的程序不知道它!你知道,我可以在我的项目顶部添加nnetaply,但它不知道Interop.nnetaply namespase;Interop.NNetApply是Visual Studio创建的自动生成的程序集,用于在托管代码和本机代码之间进行通信。它应该包含在COM库中定义的相同类型的托管定义,因此此命名空间只包含一个类型NNetaply,它有一个名为DllUnused的接口和一个名为NNetaply.DllUnusedClass的类?!我知道它有一个函数,那么如何调用该函数呢?