C++ 在非托管c++;项目
我创建了一个名为“WSdll.dll”的vb.net dll。 我编译了它,创建了一个类型库(tlb),并全局注册了它(gacutil)。。 它包括一个名为wsutils.vb的文件,其中包括一个名为“wsutils”的命名空间。 在名称空间中,有一个名为“IWSconnection”的接口(带有属性)和一个名为“WSconnection”的类。 接口和类是公共的,所有方法和属性也是公共的C++ 在非托管c++;项目,c++,vb.net,com,dll,interop,C++,Vb.net,Com,Dll,Interop,我创建了一个名为“WSdll.dll”的vb.net dll。 我编译了它,创建了一个类型库(tlb),并全局注册了它(gacutil)。。 它包括一个名为wsutils.vb的文件,其中包括一个名为“wsutils”的命名空间。 在名称空间中,有一个名为“IWSconnection”的接口(带有属性)和一个名为“WSconnection”的类。 接口和类是公共的,所有方法和属性也是公共的 我尝试在非托管C++项目中实现它。 我导入了它: #导入“.\WSdll\WSdll\bin\Debug\
我尝试在非托管C++项目中实现它。 我导入了它: #导入“.\WSdll\WSdll\bin\Debug\WSdll.tlb”\ 仅原始接口\ 命名为"guids",\ 无名称空间
然后尝试创建一个实例: CComPtrTIA您在#导入行中没有放置任何_名称空间-因此您的对象不在wsutils名称空间中,而是在全局名称空间中。从导入行删除no#u名称空间,或从对象创建行删除wsutils::名称空间。VB.NET代码中使用的名称空间名称对COM客户端不可见。只需省略wsutils::前缀。如果您对导入的名称有疑问,请使用编辑器打开自动生成的.tlh和.tli文件。默认情况下,#导入将所有接口和类放入与typelib名称(内部名称,而不是文件名)匹配的命名空间中。默认情况下,它与生成的.NET TypeLib的项目名称匹配。默认情况下,它是.NET项目中所有类的默认命名空间。:)无论如何,这个错误是关于名称空间不匹配的。非常感谢!成功了。现在,我有另一个问题:我使用:CComPtr