我需要在 C# 程序中使用非托管 COM dll。 Dll 包含一个函数,比如:
Open(char *name);
但是当导入到 c#(项目->添加引用)时,它可以作为:
mydll.Open(ref byte name)
如何将字符串传递给此函数?
当我这样做时:
byte[] name = new byte[32];
mydll.Open(ref name);
我收到编译错误“无法将 ref byte[] 转换为 ref byte”。
最佳答案
如果你的意思是它是一个字符串,那么在你的 IDL 文件中,你必须指定这个点代表一个字符串。有关 [string] 属性的信息,请参阅本文: http://msdn.microsoft.com/en-us/library/d9a4wd1h%28v=VS.80%29.aspx 如果您想符合 CLS(并与脚本语言互操作,您可能想研究使用 BSTR 而不是 char* 来传递字符串)。这样您也将获得 unicode 支持。
除非您向 COM 提示这是一个字符串,否则只要 COM 必须编码参数(即跨越单元或进程边界),您就会遇到问题。
本文还可以为您提供有关 C++/C#/COM 好东西的良好起点: COM Interop Part 1: C# Client Tutorial
关于c# - 在c#中使用dll的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114503/