C#调用DLL的问题

applevip2003 2003-10-14 07:32:41
dll是用VC6开发的,没有用到mfc的东西。参数类型是 char * 。在C#中调用这个DLL,相关代码如下:

....
[DllImport("my.dll")]
public static extern void mydll(char *flag1,char *flag2,char *flag3,char *flag4,char *flag5);
.....

编译不能通过,报错:
与“ConsoleApplication1.Class1.mydll(char*, char*, char*, char*, char*)”最匹配的重载方法具有一些无效参数.
参数“1” : 无法从“string”转换为“char*”
.....

请问高手有何办法,解决这个问题。


...全文
36 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
applevip2003 2003-11-07
  • 打赏
  • 举报
回复
问题已解决。dll中的参数改为char flag1[]... 。谢谢,大家
Pittypat 2003-10-15
  • 打赏
  • 举报
回复
搞错了,不是lock而是fixed关键字。

byte [] flag1;
byte [] flag2;
byte [] flag3;
byte [] flag4;
byte [] flag5;

fixed(byte * f1 = flag1, byte * f2 = flag2, byte * f3 = flag3, byte * f4 = flag4, byte * f5 = flag5)
{
mydll(f1, f2, f3, f4, f5);
}
fixed用于防止内存管理器移动内存。
Pittypat 2003-10-15
  • 打赏
  • 举报
回复
在.NET帮助集合中搜索unsafed关键字或者lock关键字,或者从帮助目录中查找VC#参考文档。
8789 2003-10-15
  • 打赏
  • 举报
回复
可以用引用来代指针!
shajie 2003-10-15
  • 打赏
  • 举报
回复
用delegate(委托),在C#中最好还是用它来代替C++中的函数指针的功能。

chengxing 2003-10-15
  • 打赏
  • 举报
回复
up
cdbnzc 2003-10-15
  • 打赏
  • 举报
回复
用指针要加unsafe的
applevip2003 2003-10-15
  • 打赏
  • 举报
回复
请问Laves、 prince0823,如何使用不安全代码?
baterhome 2003-10-15
  • 打赏
  • 举报
回复
用Convert类
很方便什么都可以转,从int16到bytp等等..
prqin 2003-10-15
  • 打赏
  • 举报
回复
使用不安全代码需要在编译时加上unsafe选项
vincry 2003-10-14
  • 打赏
  • 举报
回复
直接用string不行吗?
Pittypat 2003-10-14
  • 打赏
  • 举报
回复
//
使用不安全代码。注意lock的应用。
xz_king 2003-10-14
  • 打赏
  • 举报
回复
C#中可不是随便就用指针的。
同意wolve的。
wolve 2003-10-14
  • 打赏
  • 举报
回复
用char[]吧

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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