C#中如何使用头文件(xxxx.h),以及如何将头文件编译成动态链接库(DLL)?
一台仪器资料中提供了动态链接库和头文件,而动态链接库中没有方法,所有的可调用方法都在头文件中。我要在电脑上编一些软件控制这台仪器,而我用的是C#,好像不能直接用头文件。请...
一台仪器资料中提供了动态链接库和头文件,而动态链接库中没有方法,所有的可调用方法都在头文件中。我要在电脑上编一些软件控制这台仪器,而我用的是C#,好像不能直接用头文件。请问:
(1),C#中有什么办法可以使用头文件,即把头文件如何转换或是其它办法?
(2),如果是要通过把头文件编译成动态链接库,C#才可以引用,请问我应如何操作(即如何把头文件转换到动态键接库)?请尽量详细。我的开发环境是VS2008。
小小100分送给真真帮助到我的人,希望高人能帮忙。 展开
(1),C#中有什么办法可以使用头文件,即把头文件如何转换或是其它办法?
(2),如果是要通过把头文件编译成动态链接库,C#才可以引用,请问我应如何操作(即如何把头文件转换到动态键接库)?请尽量详细。我的开发环境是VS2008。
小小100分送给真真帮助到我的人,希望高人能帮忙。 展开
3个回答
展开全部
头文件、cpp文件和dll文件之间的是这样的关系:头文件声明方法,cpp实现方法、cpp编译后得到dll,因此头文件描述的是dll文件的接口,也就是具体实现的接口。如果你只有dll文件,只要知道其导出的方法就可以直接使用,win32有对应的api。如果想要将dll中的所有可用方法包含到项目中,就要包含头文件。这就是说,头文件和dll文件是对应的。另外,如果你的头文件中已经包含了实现代码,那你需要提供一个空的cpp文件,包含该头文件,并将它们编译成dll文件。
C#没法直接用C++的头文件,但是可以直接用dll,使用的技术称作PInvoke,原理是在C#代码中用extern关键字添加dll中所需方法的签名,也就是二楼说的那种方法。此外,如果这个dll是采用com技术实现的,也可以使用.NET平台提供的COM互操作特性直接导入使用。
C#没法直接用C++的头文件,但是可以直接用dll,使用的技术称作PInvoke,原理是在C#代码中用extern关键字添加dll中所需方法的签名,也就是二楼说的那种方法。此外,如果这个dll是采用com技术实现的,也可以使用.NET平台提供的COM互操作特性直接导入使用。
展开全部
首先确认该文件是否为C++的源码,然后使用C++的编译器将.h文件编译成dll
命令的方式参考如下问答
http://topic.csdn.net/t/20050122/00/3745119.html
C#无法直接使用C++的头文件
命令的方式参考如下问答
http://topic.csdn.net/t/20050122/00/3745119.html
C#无法直接使用C++的头文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显示地使用P/Invoke吧。
通过头文件你就可以知道DLL文件里面有那些方法,然后用一个C#类重新封装他们。
[DllImport("XXX.dll", EntryPoint = "函数名称", CallingConvention = CallingConvention.StdCall)]
static extern int 函数名称(
byte[] InImage,//参数1
int x,//参数2
int y,//参数3
);
我现在就在做这种工作,也是一个DLL和几个头文件,不过我又用C++把那个DLL再封了一个层,把我上层要完成的工作用C++写出来,完了我用C#就更方便调用了。
通过头文件你就可以知道DLL文件里面有那些方法,然后用一个C#类重新封装他们。
[DllImport("XXX.dll", EntryPoint = "函数名称", CallingConvention = CallingConvention.StdCall)]
static extern int 函数名称(
byte[] InImage,//参数1
int x,//参数2
int y,//参数3
);
我现在就在做这种工作,也是一个DLL和几个头文件,不过我又用C++把那个DLL再封了一个层,把我上层要完成的工作用C++写出来,完了我用C#就更方便调用了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询