110,534
社区成员
发帖
与我相关
我的任务
分享
拿出你的代码 [quote=引用 74 楼 wanghui0380 的回复:]对,都是我的错,都是dll设计的错,我太自恋,我承认行了把 对,这就是我,我都承认这是我的错,不是dll设计的问题,不是第3方的错,世界不是我说了算,ok把。反正我不会认为都是别人的错滴 这是我的问题吗?这是dll设计的问题。不知道什么叫第三方吗?世界的一切都是由你掌握的吗?你想干吗就干嘛?啥都给你准备好?你太自恋了吧?
对,都是我的错,都是dll设计的错,我太自恋,我承认行了把 对,这就是我,我都承认这是我的错,不是dll设计的问题,不是第3方的错,世界不是我说了算,ok把。反正我不会认为都是别人的错滴 这是我的问题吗?这是dll设计的问题。不知道什么叫第三方吗?世界的一切都是由你掌握的吗?你想干吗就干嘛?啥都给你准备好?你太自恋了吧?
这是我的问题吗?这是dll设计的问题。不知道什么叫第三方吗?世界的一切都是由你掌握的吗?你想干吗就干嘛?啥都给你准备好?你太自恋了吧?
我已经给出了不止一段代码来论证我的见解。你倒是拿出个代码来啊?啥都没有在这狗撩帘子全靠嘴? 你说用zero可以,那我只好在次打你的脸啦 dll代码:调用代码void APIENTRY func(char* buffer) { buffer = new char[1024]; //strcpy(buffer, "hello world"); // memset(buffer, 'a', sizeof(char) * 1024); // strcpy(buffer, "hello world"); }
运行结果图:[DllImport("MyDll", CallingConvention = CallingConvention.Winapi)] public extern static void func(ref IntPtr sb); static void Main(string[] args) { // Console.Read(); StringBuilder sb=new StringBuilder(100); IntPtr p = IntPtr.Zero; func(ref p); } }
[quote=引用 63 楼 真相重于对错 的回复:]别扯什么珍惜内存,又是什么内存爆掉,我只是就事论事,楼主题目是dll的导出函数,有个回传的参数,参数的形式是一个一级指针,如何处理才能把数据传回调用方。而且题目里面也没说明要多少内存,你怎么办?ref intptr,可不可以?stringbuilder不初始化足够的大小,可不可以? 在dll内部开辟一个内存,回不回的到.net的程序里?请回答?
只要你能自圆其说解释自己的问题,你就赢了。你想办法给自己圆吧 实时数据,2次调用。第一次200字节,第2次300字节,这没有疑问对不对 ok,ok 第2次初始200,解释一下。你现在收到了什么? 还是200?那么兄弟,你丢数据了,你的程序没挂,你的程序没出现数据丢失,我很好奇 收到300??那么兄弟,你这300怎么收到的,你不是说不能返回么?那他怎么出来的,这么神奇么?
[quote=引用 63 楼 真相重于对错 的回复:]别扯什么珍惜内存,又是什么内存爆掉,我只是就事论事,楼主题目是dll的导出函数,有个回传的参数,参数的形式是一个一级指针,如何处理才能把数据传回调用方。而且题目里面也没说明要多少内存,你怎么办?ref intptr,可不可以?stringbuilder不初始化足够的大小,可不可以? 在dll内部开辟一个内存,回不回的到.net的程序里?请回答?
void APIENTRY func(char* buffer) {
buffer = new char[1024];
//strcpy(buffer, "hello world");
// memset(buffer, 'a', sizeof(char) * 1024);
// strcpy(buffer, "hello world");
}
调用代码
[DllImport("MyDll", CallingConvention = CallingConvention.Winapi)]
public extern static void func(ref IntPtr sb);
static void Main(string[] args)
{
// Console.Read();
StringBuilder sb=new StringBuilder(100);
IntPtr p = IntPtr.Zero;
func(ref p);
}
}
运行结果图:
别扯什么珍惜内存,又是什么内存爆掉,我只是就事论事,楼主题目是dll的导出函数,有个回传的参数,参数的形式是一个一级指针,如何处理才能把数据传回调用方。而且题目里面也没说明要多少内存,你怎么办?ref intptr,可不可以?stringbuilder不初始化足够的大小,可不可以? 在dll内部开辟一个内存,回不回的到.net的程序里?请回答?
玩c的几个字节都纠结,还不说。你平白无故多给他了几百k不用的字节 这玩意之所以当年c函数的会出现这种形式的api定义,原意就是内部不定长,外部只给空。内部告诉你在那里,取多少,避免外部无端多给字节。 C的人,比你珍惜内存的。那不是个问题,反正对你来说多几十k好大回事哦,了不起内存爆掉,了不起重启服务器
1.我能告诉你,无论那个C++都有大量类似api,比如海康,比如大华的api 你能去看看,海康,大华怎么用么? 海康告诉你,给我intptr.zero,我还给你 指针 12345678 地址,所以你论据失效 2.你说winapi,ok,没问题。 来告诉我,你怎么解释在pinvoke这个全世界人们用的站里的winapi,为啥有那么多的ref intptr http://www.pinvoke.net/search.aspx?search=ref%20intptr&namespace=[All]