Gio*_*der 6 c c# c++ dllimport dllexport
问题简介:
我必须通过提供DLL文件,LIB文件和c函数头文件的API来控制某个设备,其函数被声明为dllimport.
当我在C++项目中使用API时,一切正常 - 我包含头文件,lib,dll,并调用头文件中声明的函数.
当尝试使用[DllImport]属性从C#.NET项目调用这些函数时,问题就出现了:使用确切的名称和参数声明函数,并且运行代码不会抛出任何异常.然而,设备根本没有响应,就像从未实际调用过的函数一样.
它是如何在C头中声明的:
int __declspec(dllimport) Init_Card_RTx(unsigned short device_num, unsigned short enabled_channels, unsigned short xmt_channels);
Run Code Online (Sandbox Code Playgroud)
它是如何在C#中声明的:
[DllImport(Path, CallingConvention = CallingConvention.Cdecl, EntryPoint = "Init_Card_RTx")]
public static extern int Init_Card_RTx(UInt16 device_num, UInt16 enabled_channels, UInt16 xmt_channels);
Run Code Online (Sandbox Code Playgroud)
问题:
这种事情总是让人头疼。您必须确保传递的数据的字节结构与您的 DLL 所期望的完全匹配。C# 中的本机结构不知道它们是从外部传递的,因此您必须更严格地构造代码。
请参阅此处了解更多信息:
http://msdn.microsoft.com/en-us/library/awbckfbz(v=vs.110).aspx
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |