Ⅰ 如何编译生成dll
使用VC下的cl和link手工创建dll并实现函数导入1、创建dll头文件:/** dllmain.h*/#ifndef _DLLMAIN_H#define _DLLMAIN_Hint getNumber();#endif2、创建dll源文件:/** dllmain.c*/#include "dllmain.h"int getNumber(){return 10;}3、 创建def文件:; export.defLIBRARY MY_DLLMAIN ; MY_DLLMAIN 将成为生成的dll的名称EXPORTSgetNumber @1 ; 这个名称即为函数的实际导出名称 @1为函数的导出编号4、生成dll文件:cl dllmain.c /clink /def:export.def /dll dllmain.obj这时,工程中已经包含了 dllmain.h dllmain.c export.def dllmain.obj dllmain.lib dllmain.exp MY_DLLMAIN.dll 其中,后4个文件是编译链接过程中生成的文件5、创建dlltest.c:/** dlltest.c*/#include <stdio.h>#include "dllmain.h" //dll库的头文件#pragma comment(lib,"dllmain.lib") //dllmain.lib即是上一步生成的文件int main(){printf("%dn",getNumber());}6、编译、链接dlltest.ccl dlltest.c /clink dlltest.obj注意:这里dllmain.lib和dllmain.h应该和dlltest.c在同一个目录中。此步的结果将生成 dlltest.exe7、运行:dlltest这时,系统将载入my_dllmain.dll这个动态链接库,将调用其中的getNubmer函数。
Ⅱ 怎样正确生成DLL
创建DLL工程这里,我们为了简要说明DLL的原理,我们决定使用最简单的编译环境VC6.0,如下图,我们先建立一个新的Win32 Dynamic-Link Library工程,名称为“MyDLL”,在Visual Studio中,你也可以通过建立Win32控制台程序,然后在“应用程序类型”中选择“DLL”选项,点击确定,选择“一个空的DLL工程”,确定,完成即可。一个简单的dll在第一步我们建立的工程中建立一个源码文件”dllmain.cpp“,在“dllmain.cpp”中,键入如下代码
Ⅲ 用VS 如何由源代码生成DLL文件
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
testMyDLL.h内容如下
#pragmaonce
extern"C"_declspec(dllexport)intAdd(int&a,int&b);
现在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目录。(这一点非常重要)
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragmacomment(lib,"..\debug\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用
Ⅳ 怎么把lib文件生成dll文件
你好,把lib文件生成dll文件的方法:1、在工程上点击右键,然后选择properties,进入后在左侧的树形目录中选择Linker->General2、然后要保证Enable Incremental Linking (从上往下数是第四项)选项选择(Yes (/INCREMENTAL));Ignore Import Library(第六项)选择No;Link Library Dependencies (倒数第二项)选择YES;3、调整运行即可。
Ⅳ c++ 如何生成dll文件
在VC++中选择新建一个Win32 Dynamic-Link Library。需要建立一个c/c++ head file和一个c/c++ source file并加入工程。头文件中内容为输出函数的声明,源文件中内容为DllMain函数和输出函数的定义。下面是一个最简单的例子。 //dlldemo.h #ifdef __cplusplus #define EXPORT extern "C" __declspec(dllexport) #else #define EXPORT __declspec(dllexport) #endif EXPORT void CALLBACK DllFoo(void) ; //dlldemo.c #include <windows.h> #include "dlldemo.h" int WINAPI DllMain (HINSTANCE hInstance, Dword fdwReason, PVOID pvReserved) { return TRUE ; } EXPORT void CALLBACK DllFoo(void) { MessageBox(NULL,TEXT("This function is exported from a DLL"),TEXT("DllFoo"),MB_OK) ; return ; } 头文件预处理中的__declspec是微软增加的“C扩展类存储属性”(C Extended Storage-Class Attributes),它指明一个给出的实例被存储为一种微软特定的类存储属性,可以为thread,naked,dllimport或dllexport. [MSDN原文:The extended attribute syntax for specifying storage-class information uses the __declspec keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute (thread, naked, dllimport, or dllexport).] 输出函数必须指明为CALLBACK。 DllMain是dll的入口点函数。也可以不写它。DllMain必须返回TRUE,否则系统将终止程序并弹出一个“启动程序时出错”对话框。 编译链接后,得到动态链接库文件dlldemo.dll和输入库文件dlldemo.lib。
Ⅵ 如何把VS的exe工程转成dll工程
解决办法:1、下载缺少的dll文件,复制到c:\windows\system32文件夹下;2、按win+r,输入regsvr32 /s 该文件文件名XX.DLL,点击确定;3、弹出提示信息框,提示注册成功,点击确定即可。4、用腾讯电脑管家电脑诊所–搜 缺失dll文件–立即修理