是否有可能将通用队列从c++传递到vb.net?如何去做
Is it possible to pass a Generic queue from c++ to vb.net? How?
我收到了一个旧的c++代码,处理一些TCP/IP通信,我把它转换成一个CRL类,我可以从vb.net调用。因此,我创建了一个接收Socket IP和其他参数的入口方法。这很好,所有的过程都工作正常。
现在我需要收回收到的信息,并从vb.net应用程序处理它。
这就是我尝试过但没有成功的方法:我在c++端创建了一个类(尝试了一个ref类和一个value类),并在入口方法签名中添加了我的类类型的Collections::Generic Queue。(我的想法是在c++端队列中加入类,并从vb.net端取消队列。
在vb端,我编写了调用,但在编译时,我收到错误:
'my_method_name'具有不支持的返回类型或不支持的参数类型。
奥林匹克广播服务公司。:如果我直接返回该类类型的对象(不使用队列),它可以工作。问题是,在一个电话中,我需要接收几个。
任何想法?
已经找到了我的问题的解决方案,我想分享它,因为可能对其他人有用。我的项目是一个CLR项目(CRL类库)只是一个入口点到几个用C写的函数,我在一个VB.net项目中使用"添加引用"加载的dll。
我的c++部分可以恢复为:
某个类(在本例中创建为'value')
public value class MyClass
{
public:
int val1;
...
};
接收Queue作为参数的函数:
void FunctionName(System::Collections::Generic::Queue<MyClass>^ MyClassQueue)
{
// create some object of your class
MyClass obj1;
// fill the object
obj1.val1 = 0;
// enqueue the object (you need to use '->')
MyClassQueue->Enqueue(obj1);
};
现在,从VB.net端,如果c++部分是CLR,那么在将引用添加到dll之后,您将看到类型和函数。
因此,您将创建一个MyClass类型的Queue并使用它调用函数
Dim myClassObj as new MyClass
Dim myClassQueue as new Queue(of MyClass)
myClassObj.FunctionName(myClassQueue)
myClassObj = myClassQueue.Dequeue()
现在您可以按照预期在vb端处理对象了。
问好,
相关文章:
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如何将 VB.Net 字符串作为字符*传递给C++dll?
- VB.NET DLL中的C++DLL函数复制
- TEA在VB.NET中的实现
- 如何使函数返回数组?用于制作在VB.NET中使用的DLL
- 反调试器技术:如何使用 VB.NET 对调试器隐藏线程?
- 如何在C 调用的VB.NET中编写回调函数
- 我可以在 vb.net Windows 窗体应用程序中使用 COLECONTROLModule 吗?
- C++ DLL 包装器 vb.net 传递字节数组的字节数组?
- 将简单的程序从C++移植到 vb.net
- 内存损坏从vb.net调用c dll
- vb.net单不等于c float
- 导入C 功能将结构的指针返回到VB.NET中
- REGDB_E_CLASSNOTREG from VB.NET to C++
- 使用来自VB.NET的参数调用C 函数
- 使用P/Invoke从MFC DLL函数中读取VB.NET中的结构化数据
- 将 C 按位语句转换为 vb.net
- C++ dll variable to vb.net exe
- 我无法读取 mft 并将 VB.net 转换为 C
- 在vb.net中调用C DLL文件