动态调用-C++编写的动态库,可不可以只有一个dll文件。

问题描述

C++编写的动态库,可不可以只有一个dll文件。
用C++编写动态库,根据我现阶段的学习,感觉.h、.lib、.dll三个文件都要,
如果采用动态链接,一般需要.h和.dll文件(动态库中含有类),而静态调用则需要.h和.lib文件,
可不可以只要一个dll文件,就可以拿给别人使用?求解。

解决方案

就是一个,你编译后就是一个,给别人

解决方案二:
数量不确定的,一个也可以啊。

解决方案三:
如果只给dll的话,就只能动态的加载,如果为了方便静态加载dll的话,就需要输出lib和dll一起。头文件肯定必须要啊,不然怎么知道你的函数怎么设计的。

解决方案四:

  • .h文件是动态链接库的头文件,这个可以不要,而且这个.h文件只适用于C/C++,其他的必须自己写
  • .lib可以称之为""导入库""它的作用是在编译的时候提供一个链接的入口点这个入口点在执行的时候会占到动态链接库的对应函数的入口.
  • c/c++也可以不用.lib而直接使用LoadLibrary导入dll文件.而且.lib文件对于其他开发语言也一样完全没有作用,
  • .dll是真正意义上的动态链接库,它自己独自可以完成所有动态链接库所需要做的事情。

解决方案五:
你好,http://blog.csdn.net/dl88250/article/details/1455601
希望对你有用

解决方案六:
理论上说,只要dll,并且dll有导出函数表就可以了。但是请你千万不要这么“节省”。
因为没有办法从编译后的dll知道每个函数有几个参数,参数类型,返回值类型。所以别人拿到你的dll,在一无所知的情况下调用,如同瞎蒙。

解决方案七:
http://blog.csdn.net/dl88250/article/details/1455601

解决方案八:
这方面在csdn的博客里面搜一下,东西蛮多的

解决方案九:
可以只有一个动态链接库的,只是还是推荐分开放,一个模块的功能实现放在一个动态链接库里面,而且如果你要更新一个模块的内容,只需要更新对应模块的动态链接库就可以提了,而不是全都更新

解决方案十:
不需要,有h跟dll,别人i就可以调用,不过需要显示方式,就是用LoadLibrary,GetProcAddress方式。
有lib的化,就可以工程直接link,可以隐式调用动态库。

时间: 2024-11-01 20:57:01

动态调用-C++编写的动态库,可不可以只有一个dll文件。的相关文章

atl com c++ ocx-c++调用自己编写的ocx库文件失败原因

问题描述 c++调用自己编写的ocx库文件失败原因 #include #include #include "../last/LAST.h" #include "../last/LAST_i.c" void main(void) { // 声明一个HRESULT变量以及一个Simple_ATL接口的指针 IMyClass *IMyClass = NULL; HRESULT hr = CoInitialize(NULL); // 初始化COM // 现在初始化COM h

delphi-求救!!! 调用一个DLL文件的函数,提供的调用方法好像是Delphi,VB怎么调用!

问题描述 求救!!! 调用一个DLL文件的函数,提供的调用方法好像是Delphi,VB怎么调用! 提供的调用方法如下 3.2 封装模式 接口动态库的文件名为nxmi.dll,HIS直接调用nxmi.dll, 调用之前请先安装读卡环境,安装程序为inst.exe. 3.3 调用方法 对外提供的接口函数: Procedure invoke(params :PChar; result : PChar) ; 我现在在VB中写的如下: 在模块下定义 Public Declare Function invo

制作MSN机器人,如何使用Vc.Net调用C#编写的.net库

问题描述 我想编写一个MSN机器人,并找到相应的MSN协议库,就可以不用研究MSN的协议了.但此MSN协议库(DotMsn)是用C#编写的.net的库,我现在由于对C#不熟悉,还想用VC编写.所以决定使用VC.net,来调用此.net的库.但是我并不太清楚,VC.net如何来调用此.net的库(DotMsn)不知哪位能提供一个例子程序,如何调用.net的库下面是C#调用此库的例子程序的部分代码usingSystem;usingSystem.Drawing;usingSystem.Collecti

C#程序实现动态调用DLL的研究

原文:C#程序实现动态调用DLL的研究 C#程序实现动态调用DLL的研究 摘  要:在<csdn开发高手>2004年第03期中的<化功大法--将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决"DLL Hell"提供了一种解决方案.这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也

利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

(C#)利用反射动态调用类成员

动态 (C#)利用反射动态调用类成员 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): public object InvokeMember( string name, BindingFlags invokeAttr, Binder binder, object target, object[] args ); 参数 name String,它包含要调用的构造函数.方法.属性或字段成员的名称. - 或 - 空字符串 (""

cxf webservice-关于动态调用webservice

问题描述 关于动态调用webservice 使用CXF动态客户端调用webservice,代码如下: JaxWsDynamicClientFactory dynamicClient = JaxWsDynamicClientFactory .newInstance(); String wsdl = "http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl"; Client client = dynamicCl

php中动态调用函数的方法_php技巧

本文实例讲述了php中动态调用函数的方法.分享给大家供大家参考.具体分析如下: php中你可以动态调用函数,分为以下步骤: 1. 定义一个函数 2. 将函数名(字符串)赋值给一个变量 3. 使用变量名代替函数名动态调用函数 详细代码如下所示: <?php function addition ($a, $b){ echo ($a + $b), "\n"; } $result = "addition"; $result (3,6); ?> 希望本文所述对大家

总结C#动态调用WCF接口的两种方法_C#教程

如何使用 1.第一种方式比较简单,而且也是大家喜欢的,因为不需要任何配置文件就可解决,只需知道服务契约接口和服务地址就可以调用. 2.使用Invoke的方式,但是需要在调用客户端配置WCF,配置后在Invoke类里封装服务契约接口即可. 客户端调用DEMO //第一种方式 string url = "http://localhost:3000/DoubleService.svc"; IDoubleService proxy = WcfInvokeFactory.CreateServic