关于C#中如何获取dll中的全局变量地址

jiazhucai 2014-07-31 09:08:24
本人现在有如下问题,在dll中我开辟了一块内存(uchar* 的全局变量),如下:
unsigned char* BufferFeature = NULL;
并在一个初始换函数中完成内存的分配工作。
现在我希望外界能够访问这个指针,在外界完成的工作是:将内存中的数据以二进制文件的形式保存下来
我的接口如下:
int FR_GetPackFeature(FeatureData* PackFeature)
其中FeatureData是我自己定义的一个结构体
// 特征数据
typedef struct FeatureData{
unsigned char**PackFeatureData;
unsigned int PackFeatureLength;
}FeatureData;

这个结构体中,PackFeatureData是一个二级指针,通过它来获取dll中的BufferFeature指针。
现在遇到的问题是,C#中我不知道如何定义一个完全一样的结构体,因为二级指针在C#中似乎无法定义,请教各位论坛大神,这个问题如何解决,谢谢
...全文
292 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiazhucai 2014-08-01
  • 打赏
  • 举报
回复
引用 1 楼 bbs2241 的回复:
http://blog.csdn.net/emailqjc/article/details/6704435
谢谢,不过本人还是想将dll的内存地址和内存长度封装在一个结构体中,外界通过这个结构体获取相应数据,现在还是不清楚怎么做,因为要想获得dll内部的指针,结构体中的成员变量必须是二级指针或一级指针的引用,这在C++中可以实现,但在C#中,我不知道,有什么方法解决,因为C#的结构体成员变量不能为ref InPtr。
Saleayas 2014-08-01
  • 打赏
  • 举报
回复
不需要引用,直接赋值。 C# 中使用 IntPtr。 获取以后,使用 Marshal 读取。
typedef struct FeatureData{
    unsigned char*PackFeatureData;
    unsigned int PackFeatureLength;
}FeatureData;
int FR_GetPackFeature(FeatureData* PackFeature)
{
PackFeature->PackFeatureData = BufferFeature;
PackFeature->PackFeatureLength = 100;
return 0;
}
[structLayout(...)]
struct FeatureData{
    IntPtr PackFeatureData;
    uint PackFeatureLength;
};

public static extern int FR_GetPackFeature(ref FeatureData PackFeature);
jiazhucai 2014-08-01
  • 打赏
  • 举报
回复
引用 3 楼 Saleayas 的回复:
不需要引用,直接赋值。 C# 中使用 IntPtr。 获取以后,使用 Marshal 读取。
typedef struct FeatureData{
    unsigned char*PackFeatureData;
    unsigned int PackFeatureLength;
}FeatureData;
int FR_GetPackFeature(FeatureData* PackFeature)
{
PackFeature->PackFeatureData = BufferFeature;
PackFeature->PackFeatureLength = 100;
return 0;
}
[structLayout(...)]
struct FeatureData{
    IntPtr PackFeatureData;
    uint PackFeatureLength;
};

public static extern int FR_GetPackFeature(ref FeatureData PackFeature);
成功了,非常感谢!!!
bobo_包子 2014-07-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/emailqjc/article/details/6704435

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧