gpt4 book ai didi

c# - 在c#中使用dll的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:55 25 4
gpt4 key购买 nike

我需要在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com