c#调用C语言封装的dll文件中的数据类型问题

BOOL SCL_ShowString(WORD nDevID,short *info, char *str);
这个是C语言封装的dll文件函数,中间第二个参数是一个结构体的指针,在编写c#代码的时候,该怎么调用这个结构体呢?
[DllImport("SCL_API_stdcall.dll")]
public static extern bool SCL_ShowString(uint nDevID, ref TextOutInfo1 info, string str);

TextOutInfo1 是结构体的名称,info是结构体的实例。我做测试一直通不过,在想是不是这个问题,哪个大神可以帮忙指点一下啊

第1个回答  2016-07-07
用System.Int16的数组short[]试过否?
第2个回答  2016-07-08
[DllImport("SCL_API_stdcall.dll")]
public static extern bool SCL_ShowString(uint nDevID, ref short
info, char str);本回答被网友采纳

C#调用C语言编写的DLL会不会产生什么问题?
首先,C#是可以调用C写的DLL的,引用时VS会自动将这个DLL转换为托管程序。但是你这个DLL是去调用别的C库就会出问题,因为别的库依然是非托管的。

如何把C#中的byte[]数据传到C语言写的dll函数中
using System.Runtime.InteropServices; [DllImport("c:\\\\abc.dll", EntryPoint="函数名")]public static extern 数据类型 函数名 (数据类型 x, 数据类型 y, ... 参数);如果您的DLL是com组建的直接应用DLL就ok了~祝你好运~

c# 如何调用已注入的dll的方法
\/*让p指向A*\/x=p->a;\/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*\/\/*由于此时p指向A,因而p->a==A.a,也就是1*\/对于一开始的问题p=p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:structData{inta;structData*ne...

如何在C#工程中调用C语言外部库
接下来,就可以在C#中进行C语言DLL的调用了,主要使用System.Runtime.InteropServices下的DllImport,参考网址如下:C#直接使用DllImport外部Dll的方法网页链接 从托管应用程序调用非托管代码网页链接 另外特别要说明的是,如果你的C语言的DLL里面使用了指针操作,虽然可以使用ref的方式接收传入的数据(参考网址网...

C语言能不能调用C#的DLL?
一种是用C#写出COM组件,在系统中注册以后C或C++可以通过COM接口去创建C#里的类的实例,也可以通过生成的类型库接口去调用方法等。另一种是用C++\/CLI写一个DLL,将C#的那些托管接口转化为标准本地代码的函数接口,随后利用LoadLibrary GetProcAddress等函数去调用这些函数。直接用lib导入库的方式链接我没试...

C#调用mfc的dll
分类: 电脑\/网络 >> 程序设计 >> 其他编程语言 问题描述:想问一下牛人,用c#怎么调用自己编写的mfc的dll,关键是dllImport()后面的接口函数怎么写,也就是mfc的入口是甚么?谢谢。解析:在使用外部的非.NET托管的DLL的时候,通常你要知道这个dll中公开了那些接口(一般情况下只有公开的方法有用)。

C#和C C++调用dll变量转换问题,双指针?
* sizeof(int),其实就是4x。所以你分配的内存其实不够那个数组使用。看你c语言的函数声明,没有WINAPI或CALLBACK或APIENTRY之类的修饰,有可能不是stdcall,我给改成cdecl了。参数也直接使用指针了。其实C#是可以用指针的,直接用指针就好了嘛………...

C#能否通过用C++把静态库lib封装到一个dll中的方式实现调用lib中的函 ...
首先,应该在C#语言源程序中声明外部方法,其基本形式是: [DLLImport(“DLL文件”)] 修饰符 extern 返回变量类型 方法名称 (参数列表)其中:DLL文件:包含定义外部方法的库文件。修饰符: 访问修饰符,除了abstract以外在声明方法时可以使用的修饰符。返回变量类型:在DLL文件中你需调用方法的返回变量类型。方法名称:在DLL...

c#调用DELPHI的DLL出现“尝试读取或写入受保护的内存。这通常指示其他内...
是因为 你调用的时候DELPHI的数据类型在c#中对应的不正确的原因,比如char数组在c#里就是string 指针的话 c#里面就是intPtr类型 如果是指针你需要使用非托管代码Marshl类我原来写过调用c语言和c++的 看能不能帮上你本以为这篇搜集整理的代码会是很不错的文章,花了一天时间,搜索到最后居然出来一篇叫做"C# 与 C++...

用c语言,纯c做一个dll,里面有两个函数,这两个函数之间能相互调用么
DLL__H#define DLL__H__declspec(dllexport) int add(int a, int b);__declspec(dllexport) int proc(int a, int b);#endifdll.c include "dll.h"int add(int a, int b){ return (a+b);}int proc(int a, int b){ return add(a,b);}生成的dll文件暴漏的接口 ...

相似回答