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

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

10个回答

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

z702143700
奔跑的小河 c++中怎么来调用里面的类?
4 年多之前 回复

数量不确定的,一个也可以啊。

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

z702143700
奔跑的小河 我也是这么认为的,但是我看蛮多只有一个dll,直接丢给别人调用。但是涉及到类,命名空间的时候,我就不知道怎么弄了。
4 年多之前 回复
  • .h文件是动态链接库的头文件,这个可以不要,而且这个.h文件只适用于C/C++,其他的必须自己写
  • .lib可以称之为"导入库"它的作用是在编译的时候提供一个链接的入口点,这个入口点在执行的时候会占到动态链接库的对应函数的入口.
  • c/c++也可以不用.lib而直接使用LoadLibrary导入dll文件.而且.lib文件对于其他开发语言也一样完全没有作用,
  • .dll是真正意义上的动态链接库,它自己独自可以完成所有动态链接库所需要做的事情。
z702143700
奔跑的小河 谢谢,其他语言调用只要一个dll,但是c++调用dll中的一个类时,动态方法没办法加载一个类吧,至少要一个.h文件把吧?可不可以不要头文件,就一个dll给其他c++的人用?
4 年多之前 回复

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

这方面在csdn的博客里面搜一下,东西蛮多的

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++编写的动态库,可不可以只有一个dll文件。
用C++编写动态库,根据我现阶段的学习,感觉.h、.lib、.dll三个文件都要,n如果采用动态链接,一般需要.h和.dll文件(动态库中含有类),而静态调用则需要.h和.lib文件,n可不可以只要一个dll文件,就可以拿给别人使用?求解。
C编写的动态库dll C++调用
在工作过程中,其他人给我的C动态库,我用C++调用老是失败,所以做个试验验证一下写的方式,直接上代码 //add.h #ifndef C_LIB_H #define C_LIB_H #define DLLExport __declspec(dllexport) #ifdef __cplusplus extern "C"{ #endif DLLExport int add(int
可不可以在pws下调用delphi编写的dll文件
-
编写一个dll文件
使用记事本创建一个cpp文件,名为dll_nolib.cpp: 代码如下: #include #include BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void *lpReserved) { HANDLE g_hModule; switch (dwReason) { case DLL_PROCESS_ATTACH
linux 下的C动态库编写
动态库的本质是一个.c 文件 ,里面封装了一部分相关的函数,经过已编译指令生成动态库; base.c 文件内容: #include #include #include void ch_to_base64(char src[]) { char Base[65]={}; strcpy(Base,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm
动态库DLL文件
动态库文件,希望大神能够帮忙破解,在此拜谢!
可不可以动态生成dll文件!
我想在程序执行期间,动态的生成一个dll文件,就是说在程序运行的时候要读取一些数值,然后把这些数值固定的写入dll文件中,然后进行编译,然后在这个程序中再rn动态加载。不知道能不能实现,如果能,哪位能指点一下小第,不甚感激!
更改动态库dll文件
需要用ffmpeg解码*.avs文件,代码写完之后编译和生成都成功,只是在调试的时候提示“无法启动程序,计算机中丢失avcodec-53.dll,请重新安装该程序以解决此问题”。rn 关键的问题是我需要的不是这个版本的库,我用的是avcodec-52.dll啊,不知道这个库是在哪里用到,怎么更改啊?rn 试过在项目属性里面更改依赖项的目录都没用。急急急!!!懂得过来帮帮忙!谢谢哦[/align]
windows下编写Dll动态库及调用
概述 DLL:Dynamic Link Library,即动态链接库,这种库包含了可由多个程序同时使用的代码和数据。 它是microsoft在windows操作系统中实现共享函数库概念的一种实现方式。 方法 1、新建工程:打开VS2015,选择新建项目,依次点击:VisualC++ -> Win32 -> Win32项目(填写名称,路径) -> 确定 –> 下一步(应用程序类型选择Dll,勾选
DLL 动态库 静态库 编写/调试
DLL 动态库 静态库 编写/调试 DLL 静态库 编写调试 MFC
vc编写的DLL动态库和.Net编写的动态库有什么区别?
同上,工作上需要编写.net动态库,但是对.net不熟悉想问下和vc下编写的动态库是不是一回事或者有什么区别?
一个简单的Dll动态库
自己做得一个简单的Dll动态库,新司机光环,大家多多谅解。Dll功能为add函数,函数声明为int add(int a, int b),定义了两个变量a、b,其函数返回a*b的值。
一个dll动态库的问题
MYDLL.CPP (源文件)rnrn#include"MyDll.h"rnrnint WINAPI DllMain ( HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)rnrn return TRUE ;rnrnrnEXPORT int CALLBACK Max(int a, int b)rnrn if(a>=b)rn rn return a;rn rn elsern rn return b;rn rnrnrnEXPORT int CALLBACK Min(int a, int b)rnrn if(a>=b)rn rn return b;rn rn elsern rn return a;rn rn rnrnrn头文件 :MYDLL.Hrn#ifdef __cplusplusrn#define EXPORT extern "C" __declspec (dllexport)rn#elsern#define EXPORT __declspec (dllexport)rn#endifrnrnrnEXPORT int CALLBACK Max(int a, int b);rnEXPORT int CALLBACK Min(int a, int b);rnrn提示出错:rnCompiling...rnMyDll.cpprnd:\vc\c\c_dll\mydll\mydll\mydll.h(8) : error C2146: syntax error : missing ';' before identifier 'Max'rnd:\vc\c\c_dll\mydll\mydll\mydll.h(8) : fatal error C1004: unexpected end of file foundrnError executing cl.exe.rnrnMyDll.obj - 2 error(s), 0 warning(s)rn
怎样编写一个dll文件
我的类模块里写了这么一个简单的函数,然后把它编译成了一个dll(test.dll)文件,如下:rnfunction test(Byval i as integer) as integerrn msgbox i,vbokonlyrnend functionrn然后我在工程文件里用以下语句声明:rn declare function test lib "test.dll" (byval i as integer) as integerrn用如下语句调用rn test(10)rn运行时报错:找不到dll入口点,test in test.dllrnrn请大家多帮忙,谢谢!rnrn
C动态库的两种编写方式
一、不使用.def模块导出1、新建项目->Win32项目->下一步->应用程序类型:DLL,附加选项:导出符号、预编译头。->完成。2、删除导出变量示例TST_API int nTst=0;导出函数示例TST_API int fnTst(void){ return 42;}导出类的构造函数CTst::CTst(){ return;}3、参照导出函数示例,编写自己的函数接口。...
VS2005发布的时候可不可以只有一个dll啊?
我发布的时候几乎没个aspx文件都编译一个dll,一个网站下来有几十个dll,怎么回事啊...
extern C 与c/c++动态库编写
extern c 是c++ 兼容c语言接口的一种方式,关键在于c++支持函数重载,同名的函数参数不通话编译后会产生不同的函数符号,而c语言则没有这个特性 在c++中使用extern "C", 就相当于以C的接口方式导出, 而C是不支持函数重载的; 这样编译的动态库不仅可以给c++程序调用还可以给其他任何语言区调用 去掉 extern"C"之后连也可以编译生成动态库,当c++程序调用这个...
如何使用C语言编写dll文件
我想问一下,如何用C语言编写dll文件呢?还有就是如何写头文件?最后一个问题就是C语言能不能调用API函数,如果可以能不能给个实例。谢谢啦
turbo c怎么编写和编译成DLL文件?
turbo c怎么编写和编译成DLL文件?
求用c/c++编写的dll文件。。。
我做测试用。不会用c/c++生成dll文件,所有求大家帮忙写几个dll文件。rnrn需求:函数中最好把c/c++特有的类型也都用上。例如,结构、指针什么的。返回值最好也加上返回类型。rn最好可以写几个简单的函数。在弄几个复杂的函数。函数体不用写也行。最好有方法调用说明。
java调用C++编写的动态库dll
此附件包含了java代码以及vs2013编写的动态库工程。
java调用vs2013编写的dll动态库
1、首先创建一个NativeDemo.java文件,文件内容如下代码: public class NativeDemo { int i; public static void main(String[] args) { NativeDemo ob=new NativeDemo(); ob.i=10; System.out.println("This is ob.i before
C++编写动态库.so或者.dll的陷阱
一、接口不变就可以不需要重新编译? 对于很多库的实现者可能会有这样的认识“接口不变就可以不需要重新编译”,其实这句话是有前提的,前提是实现的动态库有足够的兼容性和鲁棒性。尤其是C++实现的动态库,C++只对语言层规则做了规定,没有二进制级别的任何规定。 COM本质论里面的例子很好的阐述了这点,简单摘录如下: 查找字符串的dll版本1如下 class StringFind{ char *p
MFC调用QT编写的DLL动态库
MFC调用QT编写的动态库,如果QT dll里面用到了一些消息循环相关的接口,比如QTimer,QEventLoop等,会由于没有QAppAplication而导致这些调用出现异常,如果DLL里面没有界面显示的话,解决方法还是相对比较简单的。
vb可不可以调用vb.net 编写的dll
哪位大侠知道vb可不可以调用vb.net 编写的dll,如果可以麻烦教教我.rn急用呀!
怎样用C编写DLL?
怎样用C编写DLL?
C编写dll及调用
C编写dll及调用C编写dll及调用C编写dll及调用
动态库DLL
Windows动态链接库DLL
dll动态库
现在写了一个数据库接口函数,用ado。这个函数放在dll中,返回的数据放在一个结构中。现在的返回值总是不确定字符串和数值类型的数据。但是这个函数不放在dll中调用时,返回值是正常的。
Delphi调用C# 编写dll动态库
Delphi调用C# 编写dll动态库
DLL动态库
DLL主要的用途是使应用程序可以在运行时刻载入其中的代码,而不是编译时连接到应用程序中
vbscript可不可以调用一个dll?
vbscript可不可以调用一个dll?
一个设计dll动态库的问题
我原来使用一个c文件做dll动态库,没问题;后来我使用了两个c源文件来做,编译没错,只是在调用时编译也没错,只是在运行出错,提示如下:rnLinking...rnsmmapi_dll.obj : error LNK2001: unresolved external symbol _testrnDebug/smmapi_dll.exe : fatal error LNK1120: 1 unresolved externalsrnError executing link.exe.rnrnsmmapi_dll.exe - 2 error(s), 0 warning(s)rnrn不知道什么原因??rn
C#编写dll文件
C#编写的dll的一个实例,vs2013编写
如何编写DLL文件?
如何编写DLL文件?
请问:DLL文件的编写??
用VB如何编写DLL文件???
QT编写DLL文件
QT 4.5以上编写dll程序教程; 如:注:我的工作目录是: D:\My Documents\MyProject 一.运行QtCreator 1.新建工程/选择C++ Library 这里设计被调用的DLL 。。。。
.dll 文件编写和使用
1.基本概念   dll(dynamic-link library),动态链接库,是微软实现共享函数库的一种方式。动态链接,就是把一些常用的函数代码制作成dll文件,当某个程序调用到dll中的某个函数的时候,windows系统才把dll加载到内存中。也就是说当程序需要的时候才链接dll,所以是动态链接。   动态链接的好处是磁盘和内存的消耗减少,这也是dll的最初目的。同时dll也提供了模块化
[求助]dll文件编写
  最近接到一个任务,要用delphi写一个dll文件,在下基本不懂delphi,所以到此请教各位大侠。 rnrn  该dll文件的功能大概包含如下: rnrn  1、读取注册表; rn  2、读取文件属性; rn  3、修改和删除文件; rn  4、读取当前时间; rn  5、等待半分钟后,再继续往下运行。 rnrn  这些功能要打包成单一的dll文件,并在没有delphi编程环境的电脑上调用,调用语言不是delphi。 rnrn  提问1:实现以上功能是否要用到特定的库,如果要的话,打包的时候又如何把这些库也打包到dll文件中。 rn  提问2:请各位给个方向,我该如何着手去写这个dll可以最快交差。
如何编写dll文件。
vb能不能编写标准dll文件,不是 activex dll,就像api那种可以直接声明然后调用的。rnrnvb写的activex dll文件如何在其他的编程环境中调用?
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池