???求教C#如何调用第三方提供的lib文件?顶帖也有分!!!

大黄鸭在发光 2011-10-11 07:17:49
小弟现在有第三方提供的.lib文件以及若干.h文件以及一个dll文件,我将那个dll文件添加引用报错说确保有效的程序集或com组件。
网上说如将该lib文件编译为dll,可是怎么编译啊。
还有人说也可以直接将该lib文件在组件服务中进行com+组件注册,注册后即可引用。但怎么注册啊。
没研究过,求指点
顶帖也有分!!!
谢谢大家
...全文
395 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
看着奢扣 2011-10-12
  • 打赏
  • 举报
回复
项目引用里可以引用吧,代码里再去using?
小艳 2011-10-12
  • 打赏
  • 举报
回复
不懂。。。顶贴。。。
萧炎 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangyue4 的回复:]
小弟现在有第三方提供的.lib文件以及若干.h文件以及一个dll文件,我将那个dll文件添加引用报错说确保有效的程序集或com组件。
网上说如将该lib文件编译为dll,可是怎么编译啊。
还有人说也可以直接将该lib文件在组件服务中进行com+组件注册,注册后即可引用。但怎么注册啊。
没研究过,求指点
顶帖也有分!!!
谢谢大家
[/Quote]

原来LZ知道解决方案啊
C#能使用C/C++生成的dll,可以用DllImport导入
.Net不能直接使用C/C++生成的lib库
就像2楼说的
萧炎 2011-10-12
  • 打赏
  • 举报
回复
lib文件还要看是动态库的LIB文件,还是静态库的lib文件.如果是静态的,把它编译成dll,然后P/INVOKE调用.最好有函数的文档.

或者直接点,将该lib文件在组件服务中进行com+组件注册,注册后即可引用
using ....

一直在冬眠 2011-10-12
  • 打赏
  • 举报
回复
绑定,俺也不会,共同学习下
xiangaylian 2011-10-12
  • 打赏
  • 举报
回复
额。。只能帮你顶贴!!
松月 2011-10-12
  • 打赏
  • 举报
回复

回复内容太短了!
我是一颗丨 2011-10-12
  • 打赏
  • 举报
回复
不懂,来学习下。。
cnwin 2011-10-12
  • 打赏
  • 举报
回复
应该是直接引用dll文件即可,至于引用错误有可能是Dll文件注册问题所致。
hsphsphsp 2011-10-12
  • 打赏
  • 举报
回复
先注册dll再添加引用试试。
zzz9413 2011-10-12
  • 打赏
  • 举报
回复
线确定是COM组建还是一般DLL
COM组件可以直接被VS引用,看作C#的类库一样。因为COM组件符合通用的二进制标准,各种语言都可以使用
C#引用COM无须注册,用到COM组件里面的控件才需要(工具-》选择工具箱项-》COM组件-》浏览)
但是DLL组件就只能以类似的[DllImport("xxx.dll",CharSet=CharSet.Ansi)]调用
DLL只包括一个方法,引用时必须指定语言

bustersword 2011-10-12
  • 打赏
  • 举报
回复
呵呵,有没解决,帮顶下
doubleu2005 2011-10-12
  • 打赏
  • 举报
回复
不用lib文件,直接用dll就可以了
leiziaitudou 2011-10-11
  • 打赏
  • 举报
回复
在开始运行中输入"regsvr32 " 然后将你要注册的dll拖放到里边 然后回车,提示注册成功!
sdl2005lyx 2011-10-11
  • 打赏
  • 举报
回复
首先,你先确认这个dll是普通的dll,还com组件,你可以用VC6的一个工具OLE View打开,如果能打开正常,说明它是com组件,也会开到里面的接口!

不过,“我将那个dll文件添加引用报错说确保有效的程序集或com组件”,我估计这个dll应该是普通的dll!

那么,你只有通过平台调用的方式进行互操作。
举个例子,你.h头文件有某个函数:
C++:
void Test(char* str)

C#:
[DllImport("xxx.dll",CharSet=CharSet.Ansi)]
public static extern void Test(string str);
happytonice 2011-10-11
  • 打赏
  • 举报
回复
帮顶!!
Herbert 2011-10-11
  • 打赏
  • 举报
回复
非托管代码怎么能直接添加引用呢 你把dll文件放到你的程序目录下
根据楼上那个方法像 替换文件路径和方法名 方法签名可以在.h文件里找到 个别参数可能需要转换一下
Ricekeg 2011-10-11
  • 打赏
  • 举报
回复
给你个例子


[DllImport(@"E:\zsqTest.dll")]
public extern static long LoadDevice(); //初始化设备驱动程序
小赖赖 2011-10-11
  • 打赏
  • 举报
回复
没弄过,学习下.

111,097

社区成员

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

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

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