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文件, 有办法搞吗?
多谢高手指点了~!!谢谢 展开
C++ 的话, 如果用Loadlibrary的方式动态加载dll文件,然后用GetProcAddress获取所需要的函数,但总是不成功, 然后用DllExportView工具查看该dll文件, 发现什么函数都显示不出来, 这是不是说明这个dll文件里没有把函数export出来? 但是为什么用c#的code都可以正常用那个函数呢?
然后,c++用静态加载方式把几个库文件直接链接到程序里的话, 是不是就一定要用到相应的 .lib文件了? 我现在没有 .lib文件, 有办法搞吗?
多谢高手指点了~!!谢谢 展开
展开全部
C#的dll不是通常意义上的动态链接库,它是托管代码,依赖于framework才能用,里面是IL中间语言,要经过本机即时编译才能变成Native Code。从结构上看它不是导出函数的方式,其实应该对应DotNet里面的Assembly,在托管语言的开发环境里,直接加载就可以使用里面的类和方法。如果想在C++里调用,除非使用Managed C++,或者C#的库要写成COM。另外还必须要有Framework环境。
追问
谢谢, 那问题里c++的部分能帮忙也解释下吗? 比如我现在有四个dll文件。 在C#里用的时候就直接添加引用进去就可以, 而在c++里还不知道该怎么搞,要把这个四个dll的程序直接一起链接到程序里, 是不是一定要有对应的 .lib文件呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询