最近的文章列表

C#向C++封送结构体数组
在使用第三方的非托管API时,我们经常会遇到参数为指针或指针的指针这种情况,一般我们会用IntPtr指向我们需要传递的参数地址; 但是当遇到这种一个导出函数时,我们如何正确的使用IntPtr呢,extern "C" __declspec(dllexport) int GetClass(Class pClass[50]) ; 由于这种情况也经常可能遇到,所以我制作了2个示例程序来演示下如何处理这种非托管函数的调用! 首先创建一个C++ 的DLL 设置一个如上的导出函数 1 #include <Windows.h> 2 #include <stdio.h> 3 4 typedef struct Student 5 { 6 char
2011/9/28 Comments:
C#调用C++ DLL 参数传递时:无法封送处理泛型类型
COM 模型不支持泛型类型的概念。 因此,泛型类型不能直接用于 COM 互操作。下列不受支持的操作将失败,并显示 E_NOINTERFACE 错误:从 COM 访问泛型接口。访问从泛型类派生的非泛型类的类接口。为泛型类生成类接口。 例如,不能为 MyGenericType<T> 类生成 _MyGenericType 接口。您可以使用非泛型基接口间接访问泛型类。 例如,考虑以下类型:[C#]other class MyClass <T> : IMyClass, IEnumerable<int>{&hellip;}COM 客户端可以使用 IMyClass 接口调用此类型的实例,但调用 _MyClass、_MyClass <T> 或 IEnu
2011/9/28 Comments:
C++与C#对常用数据结构封装的对比(STL vs System.Collections.Gener
DotNet下的泛型容器类封装在System.Collections.Generic,使用的十分广泛。C++则靠STL实现了泛型容器与算法。下面对二者做一个对比,只谈用法,不深究原理。对比的内容有数组、链表和字典三种结构。一、数组C#使用List<T>,C++用的是std::vector<T>,内部实现都是数组,也就是一块连续的内存区域,插入、删除操作慢,随机访问速度快。操作C++(STL)C#(.net)说明包含#include <vector>using System.Collections.Generic;C++中也可以using namespace std;声明std::vector<int> array;List<int>
2011/9/28 Comments: