在c#中如何调用c代码编写的函数

amagic 2003-08-12 03:00:01
有用c编写的.h文件和.dll文件,如何在c#中调用里面的函数?
...全文
120 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
amagic 2003-08-16
  • 打赏
  • 举报
回复
up一下
virginsoldier 2003-08-16
  • 打赏
  • 举报
回复
[DllImport(filename, EnterPoint("FunctionName")]
public extern static result_type function ( arguments_list );
amagic 2003-08-15
  • 打赏
  • 举报
回复
假设我需要利用的文件是query.h和music.dll,如果我用vc写代码,我只要include query.h,并把music.dll放在当前工程的文件夹中,程序可以成功运行。但是c#无法利用.h文件,而函数都是在.h文件定义的。
于是我用vc生成一个标准动态连接库工程,在此工程中我加入music.dll,并编写了一段需要include query.h的代码,将此工程编译生成一个新的dll,命名为musicpack.dll。但是我在c#中DllImport这个musicpack.dll,试图使用query.h定义的函数时,还是不成功。
各位还有什么办法吗?
alaisalaix 2003-08-14
  • 打赏
  • 举报
回复
还有一种方法类似于调用windows api函数
要用到System.Runtime.InteropServices名字空间,并通过dllimport导入dll文件
alaisalaix 2003-08-14
  • 打赏
  • 举报
回复
你的问题涉及到.net组件与com组件的互操作问题
首先把你的com组件通过tlbimp生成ACW(包装函数,相当于com组件在.net中的代理),
然后你的.net工程就能调用com组件
com组件属于非托管的代码,而.net环境下生成的dll文件都是受.net框架托管的
要在.net环境下使用非托管的代码,必须对该代码做一个包装,使得.net能够通过
该包装托管这些非托管的代码,
这是原理,但实际使用com组件时,在.net环境下很简单,只需在工程中简单地把组件
引进来,编译时自动替你产生包装(ACW)
panyee 2003-08-14
  • 打赏
  • 举报
回复
http://www.csharphelp.com/archives/archive52.html
amagic 2003-08-14
  • 打赏
  • 举报
回复
没有人回答了吗?
amagic 2003-08-13
  • 打赏
  • 举报
回复
你的意思是将.h文件打包成dll,然后用c#调用?
Knight94 2003-08-13
  • 打赏
  • 举报
回复
如果用vc.net写的话,可以写成dll,那么c#可以引用即可。
如果其他版本c写的,可以写成标准的dll,那么c#可以用DllImport引入进行调用。
ArLi2003 2003-08-13
  • 打赏
  • 举报
回复
.h 不行,只能改装后放在vc7 而dll 是可以做COM 正常引用
jackyhzzjcn 2003-08-13
  • 打赏
  • 举报
回复
我的信誉怎么变成99了,倒
jackyhzzjcn 2003-08-13
  • 打赏
  • 举报
回复
dll的直接引用就可以了。

添加引用 ->
csharplove 2003-08-12
  • 打赏
  • 举报
回复
不懂,UP
kuangren 2003-08-12
  • 打赏
  • 举报
回复
帮你up
amagic 2003-08-12
  • 打赏
  • 举报
回复
怎么没人回啊
up一下

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧