请问如何把lib(C语言编的)同其带有宏定义的.h文件封装起来 生成一个新的文件供C#调用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问如何把lib(C语言编的)同其带有宏定义的.h文件封装起来 生成一个新的文件供C#调用?相关的知识,希望对你有一定的参考价值。

注:有连个.h和我所要调用的lib有关,一个是带有宏定义的.h文件,另一个是导出函数声明的.h文件。我想在c#中调用该lib库文件,请问该如何处理啊?
请高手多多指点!不胜感激!
因为C#不支持头文件,能否把Lib 和.h封装为一个Dll 供C#调用?怎么办?
(.h头文件包含宏定义和匿名枚举)

lib?静态连接库?

据我所知,C#是不能够调用lib库的,语言框架上就不支持。

一般C#使用C/C++的类时都是将其封装到dll动态连接库中,然后再使用
参考技术A 当函数调用完成后,栈需要清除, 如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者(客户端)完成的。

*******************************************

hy406,您好!

是这样的,类似的关键字还有_stdcall,如果用了_stdcall而不是_cdecl,那么清理工作由函数自己完成。

_cdecl一般用于参数数量不确定的函数,因为这样的函数在调用之前不知道参数的长度,所以函数自身无法完成清理工作,例如printf()函数、scanf()函数等。
参考技术B 楼主看看书,仔细看看编译预处理都做了哪些事情。
程序设计语言的预处理的概念:在编译之前进行的处理。
c语言的预处理主要有三个方面的内容:
1.宏定义;
2.文件包含;
3.条件编译。
预处理命令以符号“#”开头。
宏定义又称为宏代换、宏替换,简称“宏”。预处理制作单纯的宏展开,并不是检查语法错误,所说义是错误的。
语法错误都是编译阶段才检查的。预处理是不检查的。

以上是关于请问如何把lib(C语言编的)同其带有宏定义的.h文件封装起来 生成一个新的文件供C#调用?的主要内容,如果未能解决你的问题,请参考以下文章

c语言宏定义函数如何调用(里面含参数可以当函数用吗)

c语言如何封装一个带有可变参数的方法?

C语言如何定义一个宏,可以有参数或无参数的调用

关于在C语言 声明带有一个变长数组参数的函数

怎么把c语言编的程序的结果输入到一个文本文件中?

怎么把c语言编的程序的结果输入到一个文本文件中?