Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++ 如何确保ActiveX类中的方法进入DLL(通过ITypeLib检查)_C++_Dll_Visual Studio 2013_Com_Activex - Fatal编程技术网

C++ 如何确保ActiveX类中的方法进入DLL(通过ITypeLib检查)

C++ 如何确保ActiveX类中的方法进入DLL(通过ITypeLib检查),c++,dll,visual-studio-2013,com,activex,C++,Dll,Visual Studio 2013,Com,Activex,在Visual Studio 2013中,我们如何确保ActiveX中添加的方法可以在Javascript中访问,并且可以在OlleView的ITypeLib 我有一个方法,它不会显示在OlleView中的ITypeLib中,但有一些方法显示: public: STDMETHOD(SendToREST)(BSTR resource, BSTR operation, BSTR data); // not showing STDMETHOD(WriteBuf)(/*[in]*/ BS

在Visual Studio 2013中,我们如何确保ActiveX中添加的方法可以在Javascript中访问,并且可以在OlleView的
ITypeLib

我有一个方法,它不会显示在OlleView中的
ITypeLib
中,但有一些方法显示:

public:
    STDMETHOD(SendToREST)(BSTR resource, BSTR operation, BSTR data); // not showing
    STDMETHOD(WriteBuf)(/*[in]*/ BSTR a); // showing
我一直在进行
regsvr32
DLL注册,但仍然没有显示该方法

  • 我可以使用什么来跟踪方法未显示的原因
  • 是因为该方法不在DLL中,还是因为某些注册表不在DLL中 没有更新
  • 我应该手动将其添加到项目的IDL文件中吗?(因为我在那里看不到)

您需要将有问题的方法添加到IDL中的接口中。那个么那个些接口要么在那个里的库块中,要么被库块中的任何东西引用。这是将这些IDL定义编译到类型库中所必需的。然后确保类型库已注册


C++代码将引用IDL的派生,您的类将覆盖IDL接口中定义的抽象虚拟方法。这是C++代码如何与类型库定义连接的。

问题是第三颗子弹。您需要以另一种方式执行此操作,首先将其添加到IDL,然后确保编译器会抱怨,因为您尚未添加该方法。在VS2013中,始终使用类向导,以便两件事同时发生。@HansPassant如果类(.h和.cpp)已经存在,我是否应该再次添加该类(参考您所说的类向导)?@HansPassant如果您对该类进行注释,您可以将其作为答案,以便我可以接受它。如何确保类型库已注册,regsvr32命令不够吗?
regsvr32
在类型库是DLL的一部分时可以。当您通过LIBID(而不是浏览特定文件)查找类型库时,始终可以通过使用OleView打开来进行双重检查。