Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为c库创建包装器#_C#_Dll_Dllimport - Fatal编程技术网

C# 为c库创建包装器#

C# 为c库创建包装器#,c#,dll,dllimport,C#,Dll,Dllimport,有时,如果我能使用一些其他的dll程序并对它们进行自定义,那就太好了。例如,有一个名为usb uirt的设备,我可以从计算机发送红外信号。用来发送信号的软件很差,设备的驱动程序带有很多dll。因此,我尝试将它们导入visual studio,但无法创建引用。那可能是因为我想他们可能是用另一种语言写的。但是有人设法为这些库获得了一个包装器,当我导入这些dll时,它工作了,我能够从c#控制设备,这很好 不管怎样,我只是对这个很好奇,我想了解更多。。。我如何知道何时可以使用这些dll?他们在哪里创造了

有时,如果我能使用一些其他的dll程序并对它们进行自定义,那就太好了。例如,有一个名为usb uirt的设备,我可以从计算机发送红外信号。用来发送信号的软件很差,设备的驱动程序带有很多dll。因此,我尝试将它们导入visual studio,但无法创建引用。那可能是因为我想他们可能是用另一种语言写的。但是有人设法为这些库获得了一个包装器,当我导入这些dll时,它工作了,我能够从c#控制设备,这很好

不管怎样,我只是对这个很好奇,我想了解更多。。。我如何知道何时可以使用这些dll?他们在哪里创造了什么语言?我试过在谷歌上搜索,我发现了如下内容:

[DllImport("my.dll")]
static extern void methodA(UInt32[] data);

[]是什么意思?有时他们使用指针。。。根据我的经验,我从未使用过指针。我总是可以通过引用或通过值加在委托的帮助下传递c#中的变量。我不觉得需要指针,但也许我错了。。。我有兴趣了解这一切。我应该用谷歌搜索什么短语来了解这一点

您要找的是

[]是什么意思

这是向函数调用添加属性的方式。这是最新的

或者,如果您指的是
UInt32[]
中的一组括号,则表示这是UInt32的一部分

有时他们使用指针

可以在C#
不安全的
代码中创建指针,但是对于p/Invoke,有一个更好的系统称为。编组允许在DLL中的托管C#代码和非托管代码之间转换类型。例如,有一个
IntPtr
类用于表示指向整数的指针,您可以在方法声明中使用该指针,但通常只需传入一个正则整数,封送代码就会自动为您转换它

我如何知道何时可以使用这些dll?他们在哪里创造了什么语言


我不确定如何判断一个给定的DLL是否被管理,但是关于一个给定的DLL是用什么语言编写的是不相关的,并且在编译后很难确定。

这个
[dlliport]
是一个类属性。这是C#的标准部分。您可以在此处阅读有关属性的更多信息-


UInt32[]data
中的
[]
表示它是UInt32对象的数组。这也是C#的标准部分。你可以在C中阅读更多关于数组的内容-

从搜索InterOp或p/Invoke开始:我以为OP是在
UInt32[]
@MusiGenesis中谈论
[]
,我扩展了我的答案以防万一,但听起来有点奇怪,有人会知道属性,但会被数组搞糊涂,默认情况下,几乎每种语言中都有。