C#与c++调用dll的不同方式

以前基本没有做过Windows环境的开发工作,也没做过C#。对这部分的一些东西不熟悉。最近搞一个这方面的小工具看了下。我们现在只有几个dll文件。C#调用dll里函数的话... 以前基本没有做过Windows环境的开发工作,也没做过C#。 对这部分的一些东西不熟悉。最近搞一个这方面的小工具看了下。我们现在只有几个dll文件。 C#调用dll里函数的话直接在工程里添加引用然后用using导入要用的函数就可以了。 感觉是比较方便。它这个属于什么方式呢? 看起来也不像c/c++那种直接链接的方式,应该也是运行时临时加载的吧?

C++ 的话, 如果用Loadlibrary的方式动态加载dll文件,然后用GetProcAddress获取所需要的函数,但总是不成功, 然后用DllExportView工具查看该dll文件, 发现什么函数都显示不出来, 这是不是说明这个dll文件里没有把函数export出来? 但是为什么用c#的code都可以正常用那个函数呢?
然后,c++用静态加载方式把几个库文件直接链接到程序里的话, 是不是就一定要用到相应的 .lib文件了? 我现在没有 .lib文件, 有办法搞吗?

多谢高手指点了~!!谢谢
展开
 我来答
百度网友6705c13
2017-06-05 · TA获得超过801个赞
知道小有建树答主
回答量:613
采纳率:83%
帮助的人:200万
展开全部
C#的dll不是通常意义上的动态链接库,它是托管代码,依赖于framework才能用,里面是IL中间语言,要经过本机即时编译才能变成Native Code。从结构上看它不是导出函数的方式,其实应该对应DotNet里面的Assembly,在托管语言的开发环境里,直接加载就可以使用里面的类和方法。如果想在C++里调用,除非使用Managed C++,或者C#的库要写成COM。另外还必须要有Framework环境。
追问
谢谢, 那问题里c++的部分能帮忙也解释下吗? 比如我现在有四个dll文件。 在C#里用的时候就直接添加引用进去就可以,  而在c++里还不知道该怎么搞,要把这个四个dll的程序直接一起链接到程序里, 是不是一定要有对应的 .lib文件呢?
阳光的雷咩咩
2017-06-05 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7821万
展开全部
C#调用非托管dll一般用dllimport
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式