dll文件为什么不能导出
① RADASM 编译DLL 为何没有输出表,求指点
DLL文件是PE格式的,他有一个导出表,我们用*.def文件为其定义导出哪些函数,*.def文件格式如下:
EXPORTS func1
func2
func3
……
因为我们进行连接文件的时候,是把*.obj文件和*.def文件进行链接的,链接后生成*.DLL文件和*.lib文件,*.lib文件中就有我们定义的导出的函数的信息。这样,系统就知道该DLL文件有
哪些函数导出了。没有经过*.def文件定义的函数标识,就不能直接被应用程序使用,只能被DLL文件里的函数直接使用。
不知道这些对你是否有用
② “无法找到指定dll库文件的输出命令”怎么解决
系统有问题了。
换个验证过的系统盘重装系统就行了。
用u盘或者硬盘这些都是可以的,且安装速度非常快。
③ 无法找到指定dll库文件的输出命令 怎么解决
以d3_dx56.dll为例,具体办法如下:
1、首先,以一定的方式获取d3_dx56.dll文件,如搜索引擎查询和下载。
④ delphi dll 导出tlb
你说的DLL文件导出TLB的话,普通的DLL文件是无法导出tlb文件的,应该是COM类型的DLL组件,才可以导出tlb文件,用于COM组件的使用。
具体就是在DLEPHI的导入
中导入,你要使用的com组件的DLL文件即可。
在DELPHI中有两种方法使用这种文件,一种是注册了dll文件的使用方法,另一种是不需要注册DLL的方法。
具体使用可以根据你的实际情况选择
⑤ VS 程序能够运行但dll文件无法生成
你贴出来的项目配置,把目标文件扩展名改为.dll
你的配置类型是动态库(.dll)。扩展为exe。相当于生成dll后把后缀改为exe 所以不能跑。
要有exe调用
⑥ 为什么有的dll里没有导出函数
dll里如果把函数设为隐式导出,用depend或者execope是看不到的.
回楼上:
一是使用.def文件;
二是使用_declspec(dllexport)
对于第一种DEF方式,你可以设置导出dll的函数的NONAME属性,这样就给每个函数编了一个序号.外部程序要用dll的函数时,不直接调用函数名,而是用序号来调用.而且外部程序是无法直接看到dll函数名的,只能看到序号.
⑦ 如何从 DLL 导出数据
1)包含头文件
2)#pragma comment(lib, "xxx.lib")//导入lib
如果仅仅是考虑dll导入导出问题的话,def文件等于_declspec(dllexport)语句。
_declspec(dllexport)语句是告诉编译器,在制作dll文件时,要导出的函数名或变量名,并且在编译器中已经设置要导出lib文件。如果在dll文件中未声明_declspec(dllexport),则即使编译器设置了要导出lib文件,lib文件也不会被创建。因此,要生成lib文件,必须指定_declspec(dllexport)和编译器导出lib文件这两件事情。
当然,如果dll文件未指定_declspec(dllexport),则必须自建def文件,告诉编译器要在lib中生成被导出的函数和/或变量。
def文件能做的事情远远比_declspec(dllexport)指令能做的事情多。
应该知道,被导出的函数,在应用程序中调用时,1可以通过函数名调用,2可以通过序数调用!
2的做法很少见。如果要通过序数来导出dll文件中的函数,则定义def文件时非常方便的。
如果楼主喜欢“魔兽争霸”的话,看下“魔兽”的文件--storm.dll,可以发现里面全是用序数导出函数的,没有函数名。这个在商业软件中很常见,因此2的做法其实是很普遍,也很实用的做法--通过序数导出函数
⑧ 怎样导出DLL文件
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。DLL 是一个包含可由多个程序同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。 http://ke..com/view/230750.htm【网络】DLL文件(Dynamic Linkable Library 即动态链接库文件),是一种不能单独运行的文件,它允许程序共享执行特殊任务所必需的代码和其他资源比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的 EXE 程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。Windows 系统平台上提供了一种完全不同的较有效的编程和运行环境,你可以将独立的程序模块创建为较小的 DLL 文件,并可对它们单独编译和测试。在运行时,只有当 EXE 程序确实要调用这些 DLL 模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了 EXE 文件的大小和对内存空间的需求,而且使这些 DLL 模块可以同时被多个应用程序使用。Windows 自己就将一些主要的系统功能以 DLL 模块的形式实现。一般来说,DLL 是一种磁盘文件,以.dll、.DRV、.FON、.SYS 和许多以 .EXE 为扩展名的系统文件都可以是 DLL。它由全局数据、服务函数和资源组成,在运行时被系统加载到调用进程的虚拟空间中,成为调用进程的一部分。如果与其它 DLL 之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL 模块中包含各种导出函数,用于向外界提供服务。DLL 可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个 DLL 在内存中只有一个实例;DLL 实现了代码封装性;DLL 的编制与具体的编程语言及编译器无关。常用工具软件下载可以到5151软件园