概述
I have to call a win32 dll function
int func1( int arg1, unsigned char **arg2, int *arg3);
and i need wrapped in c# as
public extern int fuc1(int arg1, out IntPtr arg2, out IntPtr arg3);
and i called it from a c# application as
int arg1;
IntPtr arg2 = IntPtr.Zero;
IntPtr arg3 = IntPtr.Zero;
func1(arg1,out arg2,out arg3);
Is the function declared in the c# wrapper as well as called in C# test app Correct ?
Now i need to store the arg2 in a text file. How to do that.
Got answer from Hans and i wrote it in a file using
System.IO.StreamWriter(@Application.StartupPath + "\Filename.txt");
file.WriteLine(arg2);
file.Close();
解决方案i have a free function in the dll to clear the memory
Then you have a shot at making this work. The function declaration ought to look like this:
[DllImport("foo.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int func1(int arg1, out IntPtr arg2, ref int arg3);
And you'd call it like this:
IntPtr ptr = IntPtr.Zero;
int dunno = 99;
string result = null;
int retval = func1(42, out ptr, ref dunno);
if (retval == success) {
result = Marshal.PtrToStringAnsi(ptr);
// etc...
}
if (ptr != IntPtr.Zero) func1free(ptr);
Where "func1free" is the otherwise undocumented function that releases the string.
最后
以上就是重要橘子为你收集整理的c# char unsigned_unsigned char型**相当于C#和必须写在文件中的返回值的全部内容,希望文章能够帮你解决c# char unsigned_unsigned char型**相当于C#和必须写在文件中的返回值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复