vs2010创建和使用动态链接库(dll)

vs2010创建和使用动态链接库(dll)1、打开Microsoft Visual Studio 2010,选择File->New->Project。

2、在New Project中选择Installed Templates->VisualC++->Win32。

3、选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll。

4、单击OK,在出现的Win32 Application Wizard的Overview 对话框中点击Next。

5、在Application Settings中,选择Application type下的DLL。

6、勾选Additional options下的Empty project。

7、单击Finish创建项目。

向动态链接库添加类:1、添加新类头文件。

右键单击simpledll项目,Add->New Item,选择Header File(.h),设置名称为simpledll,单击Add。

2、添加新类源文件。

右键单击simpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为simpledll,单击Add。

3、为新类添加内容。

内容如下:头文件simpledll.h:[html] view plain copy print?//------------------ simpledll.h---------------- #pragma once; //该宏完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入//宏DLL_IMPLEMENT在simpledll.cpp中定义#ifdef DLL_IMPLEMENT #define DLL_API __declspec(dllexport) #else #define DLL_API__declspec(dllimport) #endif namespace zdd { //导出类class DLL_API SimpleDll { public: SimpleDll(); ~SimpleDll(); int add(int x, int y); //简单方法}; }源文件simpledll.cpp:[cpp] view plain copy print?//------------------ simpledll.cpp---------------- //注意此处的宏定义需要写在#include "simpledll.h"之前//以完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入#define DLL_IMPLEMENT#include "simpledll.h" namespace zdd{ SimpleDll::SimpleDll() { } SimpleDll::~SimpleDll() { } intSimpleDll::add(int x, int y) { returnx+y; } } 4、完成后点击Build->Build Solution,生成解决方案。

可在~zdddll\Debug下查看生成的simpledll.lib 和simpledll.dll.文件。

创建引用动态链接库的应用程序:1、选择File->New->Project。

2、在New Project中选择Installed Templates->VisualC++->Win32。

3、选择Win32 Console Application,设置名称:usesimpledll。

选择Add to solution。

4、单击OK,在出现的Win32 Application Wizard的Overview 对话框中点击Next。

5、在Application Settings中,选择Application type下的Console application。

6、取消Additional options下的Precompiled header,勾选Empty project。

7、单击Finish创建项目。

在控制台应用程序中使用类库的功能:1、为控制台应用程序添加main.cpp。

右键单击usesimpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为main,单击Add。

2、为main.cpp添加内容。

如下所示:[cpp] view plain copy print?//------------------ main.cpp------------------- #include "simpledll.h" using namespace zdd; #include <iostream> using namespace std; intmain(char argc, char**argv) { // cout << "----------------------" <<endl; SimpleDll sd;cout << "sd.add: 3+5=" << sd.add(3, 5)<<endl; cout << "sd.getConst(): "<<sd.getConst()<<endl; SimpleDll *psd = new SimpleDll; cout <<"psd->add: 5+5=" << psd->add(5, 5)<<endl; cout << "psd->getConst(): "<<endl; cout << "----------------------" <<endl; cout << "please press Enter exit."<<endl; getchar();return 0; }3、引用simpledll项目。

右键单击usesimpledll项目,选择Properties->Common Properties->Framework and References。

点击Add New Reference,选择simpledll项目,单击OK。

4、设置头文件路径。

选择Properties->Configuration Properties->VC++ Directories。

在Include Directories项添加$(SolutionDir)\simpledll\,选择应用,确定。

5、设置usesimpledll项目为活动项目。

右键单击usesimpledll 项目,选择Set up StartUp Project。

6、生成解决方案。

Debug运行结果如下:[cpp] view plain copy print?3+5=8 5+5=10更丰富的simpledll类和相关问题:simpledll.h文件:[cpp] view plain copy print?//------------------ simpledll.h---------------- #pragma once; //该宏完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入//宏DLL_IMPLEMENT在simpledll.cpp中定义#ifdef DLL_IMPLEMENT #define DLL_API __declspec(dllexport) #else #define DLL_API__declspec(dllimport) #endif namespace zdd { //导出类class DLL_API SimpleDll { public: SimpleDll(); ~SimpleDll(); int add(int x, int y); //简单方法static int sub(int x, int y);//静态方法int getConst(); // int getNum(); private: void setNum(int n);int num; }; //全局变量int DLL_API number; SimpleDll DLL_API sdd; //对于指针,下面两种用法没区别?SimpleDll DLL_API *psdd; SimpleDll *psdd1; //方法int DLL_API Add(int a, int b); SimpleDll *createClass(){ return new SimpleDll; } /* //问题1:若这样使用,则出现如下错误:// error C2059: syntax error : '__declspec(dllexport)' // error C2143: syntax error : missing ';' before '{' // error : '__declspec(dllimport)'// error C2143: syntax error : missing ';' before '{' // error C2447: '{' : missing function header (old-style formal list?)//为什么?SimpleDll* DLL_API createClass1(){ return new SimpleDll; } */ /* //问题2:若这样使用,则出现如下错误://Error 1 errorC2491: 'zdd::createClass1' : definition of dllimport function not allowed usesimpledll //为什么?SimpleDllDLL_API * createClass2() { return new SimpleDll; } */ //问题3:这样使用(实现在.cpp 中),编译没有问题。

合集下载

使用VisualStudio进行动态链接库开发流程

使用VisualStudio进行动态链接库开发流程

使⽤VisualStudio进⾏动态链接库开发流程⼀、动态链接库和动态链接动态链接库:在 Windows 中,动态链接库 (DLL) 是作为函数和资源的共享库的⼀种可执⾏⽂件。

在调⽤它们的应⽤程序的上下⽂中运⾏。

动态链接:动态链接是操作系统功能。

操作系统将 DLL 加载到应⽤程序的内存空间中,它可使执⾏⽂件调⽤函数或使⽤存储在单独⽂件中的资源。

动态链接库有什么⽤: DLL 可以在可执⾏⽂件之间轻松共享函数和资源。

多个应⽤程序可同时访问内存中单个 DLL 副本的内容。

⼆、和静态链接的区别这部分我们只需要知道静态链接把所有的执⾏需要的库都打包到可执⾏⽂件⾥⾯了,动态链接则是把各个库独⽴出来,在运⾏时由操作系统将 DLL 加载到应⽤程序的内存空间中。

在Windows上具体⼀些就是:静态链接将静态库中的所有对象代码复制到⽣成时使⽤它的可执⾏⽂件中。

动态链接仅包括 Windows 在运⾏时⽤于查找和加载含有数据项或函数的 DLL 所需的信息。

创建 DLL 时,还将创建包含此信息的导⼊库。

⽣成调⽤ DLL 的可执⾏⽂件时,链接器会使⽤导⼊库中的导出符号来为 Windows 加载程序存储此信息。

当加载程序加载 DLL 时,该 DLL 会映射到你的应⽤程序的内存空间中。

如果存在,则调⽤ DLL 中的特殊函数 DllMain,以执⾏ DLL 所需的任何初始化。

也可以直接看看的介绍,单击蓝字访问。

三、⽤VS⽣成动态库的基本流程这⾥我们使⽤C++语⾔开发,对于环境有的要求如下:1、Visual Studio。

2、VS中安装了 “C++ 的桌⾯开发” ⼯作负载。

如果在安装 Visual Studio 时未安装此⼯作负载,可以再次运⾏安装程序并⽴即安装。

Visual Studio的安装和配置可以,单击蓝字访问即可。

具体步骤如下:①在 Visual Studio 2019 中创建 DLL 项⽬在菜单栏上,选择“⽂件”>“新建”>“项⽬”,打开“创建新项⽬”对话框。

总结vs2010调用lib,和dll

总结vs2010调用lib,和dll

Vs2010调用lib和dll的总结1.首先调用dll先用vs2010生成自己的dll文件,我命名为testdll.dll首先新建一个工程testdll,在工程中加入testdll.h和testdll.cpp testdll.h内容为:extern"C"int__declspec(dllexport) add(int,int);testdll.cpp内容为:#include<windows.h>#include"testdll.h"BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){switch(ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;}int add(int a,int b){return a+b;}还有设置一下编译就生成了testdll.dll库文件再新建一个工程test在test里面建立一个test.cppTest.cpp内容:#include<windows.h>#include<iostream>#include<tchar.h>using namespace std;int main(){HINSTANCE hDll; //dll 句?柄À¨²hDll=LoadLibrary(TEXT("testdll.dll")); //加¨®载?dlltypedef int(* lpAddFun)(int,int); //宏¨º定¡§义°?函¡¥数ºy指?针?类¤¨¤型¨ªlpAddFun addFun; //函¡¥数ºy指?针?int * num;if(hDll!=NULL) //判D断?dll加¨®载?是º?否¤?成¨¦功|{addFun=(lpAddFun)GetProcAddress(hDll,"add"); //获?取¨?想?要°a引°y入¨?的Ì?函¡¥数ºy以°?及¡ã变À?量¢?num=(int *)GetProcAddress(hDll,"num");/* if(num!=NULL){printf("%d\n",* num);}*/if(addFun!=NULL){int result=addFun(3,2);printf("3+2=%d\n",result);}FreeLibrary(hDll); //卸?载?dll}getchar();return 0;}设置三个地方,就可以编译了第一:上面打红圈的就是把testdll.dll的路径添加上去第二:添加testdll.lib就可以了第三:就是把testdll.dll路径添加到环境变量PATH中,就可以了。

vs2010创建和使用动态链接库(dll)

vs2010创建和使用动态链接库(dll)

vs2010创建和使用动态链接库(dll)1、打开Microsoft Visual Studio 2010,选择File-&gt;New-&gt;Project。

2、在New Project中选择Installed Templates-&gt;VisualC++-&gt;Win32。

3、选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll。

4、单击OK,在出现的Win32 Application Wizard的Overview 对话框中点击Next。

5、在Application Settings中,选择Application type下的DLL。

6、勾选Additional options下的Empty project。

7、单击Finish创建项目。

向动态链接库添加类:1、添加新类头文件。

右键单击simpledll项目,Add-&gt;New Item,选择Header File(.h),设置名称为simpledll,单击Add。

2、添加新类源文件。

右键单击simpledll项目,Add-&gt;New Item,选择C++ File(.cpp),设置名称为simpledll,单击Add。

3、为新类添加内容。

内容如下:头文件simpledll.h:[html] view plain copy print?//------------------ simpledll.h---------------- #pragma once; //该宏完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入//宏DLL_IMPLEMENT在simpledll.cpp中定义#ifdef DLL_IMPLEMENT #define DLL_API __declspec(dllexport) #else #define DLL_API__declspec(dllimport) #endif namespace zdd { //导出类class DLL_API SimpleDll { public: SimpleDll(); ~SimpleDll(); int add(int x, int y); //简单方法}; }源文件simpledll.cpp:[cpp] view plain copy print?//------------------ simpledll.cpp---------------- //注意此处的宏定义需要写在#include "simpledll.h"之前//以完成在dll项目内部使用__declspec(dllexport)导出//在dll项目外部使用时,用__declspec(dllimport)导入#define DLL_IMPLEMENT#include "simpledll.h" namespace zdd{ SimpleDll::SimpleDll() { } SimpleDll::~SimpleDll() { } intSimpleDll::add(int x, int y) { returnx+y; } } 4、完成后点击Build-&gt;Build Solution,生成解决方案。

使用vs建立动态链接库dll过程和使用方法

使用vs建立动态链接库dll过程和使用方法

使用vs建立动态链接库dll的过程和使用方法创建动态链接库(DLL)的过程可以分为几个步骤。

我将使用Visual Studio 来演示这个过程:创建DLL的步骤:1.打开Visual Studio,选择“文件”->“新建”->“项目”。

2.在新项目窗口中,选择“Visual C++”->“Windows桌面向导应用程序”。

3.输入项目名称和位置,然后点击“确定”。

4.在“解决方案资源管理器”中,右键单击项目名称->添加->新建项。

5.在“添加新项”窗口中,选择“DLL”,输入DLL名称,然后点击“添加”。

编写DLL代码:现在你已经有了一个空的DLL,你可以开始编写你的代码了。

例如,你可以添加以下代码到你的.cpp文件中:在这个例子中,我们创建了一个简单的函数add,它接收两个整数并返回它们的和。

extern "C"部分告诉编译器使用C链接规则创建导出函数,__declspec(dllexport)部分使得该函数可以从DLL中导出。

编译和生成DLL:在Visual Studio中,你可以通过点击“生成”菜单然后选择“生成解决方案”来编译和生成你的DLL。

如果编译成功,你可以在你的项目文件夹的Debug或Release 文件夹中找到生成的DLL文件。

使用DLL:使用DLL的过程可以分为几个步骤:1.加载DLL:使用Windows API函数LoadLibrary可以加载DLL。

例如:HMODULE hMod = LoadLibrary(TEXT("MyDLL.dll"));。

这个函数会返回一个模块句柄,如果DLL加载成功的话。

2.获取函数地址:使用GetProcAddress函数可以获取DLL中函数的地址。

例如:add_proc = (int (*)(int, int))GetProcAddress(hMod, "add");。

Visual Studio 2010 动态库(Dll)的动态引用和静态引用

Visual Studio 2010  动态库(Dll)的动态引用和静态引用

静态加载DLL的步骤如下:1.将MyDLL.dll,MyDLL.lib,MyDLL.h拷贝到目标工程(需调用MyDLL.DLL的工程)的Debug目录下。

2.配置头文件路径:选择项目->属性->C/C++->常规->附加包含目录:设置头文件路径。

3.配置DLL和LIB文件路径:选择项目->属性->连接器->常规->附加库目录:设置DLL和LIB文件路径。

4.加载Lib文件:方法一:选择项目->属性->连接器->输入->附加依赖项:输入要加载的Lib文件名(加载多个Lib文件时,以回车为分隔符)。

方法二:在程序中使用#pragma comment(lib," MyDLL.lib ")进行设定。

5.配置该应用程序.exe的生成目录要和加载的DLL、LIB放在同一目录:选择项目->属性->连接器->常规->输出文件。

6.在目标工程(*.cpp,需要调用DLL中的函数)中加入:#include "MyDLL.h"动态加载DLL的步骤如下:1.声明头文件<windows.h>,说明要用windows32方法来加载和卸载DLL。

例如:#include<Windows.h>2.用typedef定义一个函数指针类型,这个指针类型要与调用的DLL引出函数类型和参数保持一致。

例如:typedef void(*FUN)(int,int);3.通过Win32 API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄。

这里字符串类型是LPSTR,当是unicode字符集的时候会不行,因此要在配置-属性-常规里面把默认字符集“unicode”改成支持多字符扩展即可。

例如:const char* dllName = "MyDLL.dll";HMODULE hDLL = LoadLibrary(dllName);4.取到的地址要判断返回的句柄是否为空,如果为无效句柄,那么要释放加载DLL所占用的内存。

动态链接库的创建与使用

动态链接库的创建与使用

动态链接库的创建与使用动态链接库(Dynamic Link Library,DLL)是一种用于在Windows 操作系统中组织、存储和分发可执行代码和数据的文件格式。

DLL文件包含一组函数、变量和资源,可以与其他程序共享,以便提高应用程序的开发效率和运行速度。

1.创建DLL项目:首先,在开发环境中创建一个DLL项目。

可以使用开发工具如Visual Studio等来创建。

选择DLL项目后,在项目中添加需要的函数、变量和资源。

2.导出函数和变量:在DLL项目中,需要明确指定哪些函数和变量可以被外部程序调用。

可以通过将函数和变量声明为`__declspec(dllexport)`来实现。

这样,外部程序在调用时可以访问到这些函数和变量。

示例代码如下:```cpp__declspec(dllexport) int add(int a, int b)return a + b;}```3.编译DLL项目:在完成函数和变量的导出后,编译DLL项目生成DLL文件。

编译过程会把函数和变量编译成二进制代码,并生成DLL文件。

4.调用DLL:在外部程序中调用DLL中的函数和变量时,首先需要加载DLL文件,并获取对应的函数或变量的地址。

然后,可以使用加载的函数或变量来执行相应的操作。

示例代码如下:```cpp#include <windows.h>#include <iostream>using namespace std;typedef int (*AddFunc)(int, int);int mainHMODULE dllHandle = LoadLibrary("mydll.dll");if (dllHandle == NULL)cout << "Failed to load DLL." << endl;return 1;}AddFunc addFunc = (AddFunc)GetProcAddress(dllHandle, "add");if (addFunc == NULL)cout << "Failed to get address of function." << endl;FreeLibrary(dllHandle);return 1;}int result = addFunc(1, 2);cout << "Result: " << result << endl;FreeLibrary(dllHandle);return 0;}```在上述代码中,通过`LoadLibrary`函数加载DLL文件,并使用`GetProcAddress`函数获取函数地址,在调用函数时可以直接使用获取到的函数地址来执行相应的操作。

vs2010下lib和dll文件的使用

vs2010下lib和dll文件的使用——笔记一、lib文件的简介.lib是一种文件后缀,是Windows操作系统的库文件,有静态lib和动态lib 之分:1)、静态lib文件:将导出的文件的声明和实现都放在lib文件中,此时lib 文件主要包含函数的实现部分(cpp文件),例如类的函数定义。

使用时只需配合相关的头文件,编译后程序将lib文件中的代码嵌入到宿主程序中,也就是最后的exe文件中,此时移除lib文件,程序可以正常运行,即编译后就不需要lib 文件的支持了。

2)、动态lib文件:相当于是一个h头文件,用于支持相应的dll文件的运行。

里面存储的是dll文件中各个导出函数的地址,达到链接主程序与dll文件的目的。

二、dll文件的生成vs2010生成dll文件,生成dll文件的时候需要对应的lib文件才能使用,dll生成方法如下(此处只是生成部分,在使用时还需修改):1)新建工程,选择“win32项目”,注意不是“win32控制台项目”,下一步选择生成dll文件,其余默认;2)添加需要封装的.cpp文件,并加入对应的.h文件,先说明类的封装(也就是类的cpp文件)头文件.hclass __declspec(dllexport) NB (类的头文件中只需修改此处即可){public:private:}其中关键字dllexport说明该类的实现部分需要导出。

源文件.cpp添加一句#include "stdafx.h"即可再说明一下一般函数的封装将函数的定义改为extern"C"__declspec(dllexport) float add(float a, float b);extern"C"__declspec(dllexport) float MIN(float a,float b);float MAX(float a,float b);函数MAX为导出到dll文件中,因此相当于不可见。

Vs2010编译程序成DLL动态链接库并引用

Vs2010编译程序成DLL文件并引用(限C#)
1、创建新C#控制台应用程序,项目命名createBll,打开Program.cs重命名为TestA(可以不重命名)并修改代码,如图:
写好后,可以写其它的类.cs文件
2、完成后,点击菜单栏的“项目”,下拉单选择“createDll属性”,打开如图窗口
在输出类型选择“类库”,然后关掉该窗口,生成解决方案,即生成了creatBll.dll文件,在项目下createBll\createBll\bin\Debug\createBll.dll目录下。

3、引用Dll文件,新建项目referenceDll,把上面生成的createBll.dll文件复制粘贴到新项目下Debug文件夹下面
4、在referenceDll项目解决方案处的引用点击右键,弹出窗口
浏览标签下,打开referenceDll项目下Debug文件,找到刚才复制过来的createBll.dll 文件,单击确定即可引用。

5、双击引用下的createBll打开对象浏览器,展开可以看的createBll.dll文件里封装的方法TestA
6、编写Program里的相应代码
先引用createBll,然后代码如图,即可调用dll里的方法。

编写C语言DLL,及C调用DLL(VS2010)

一、编写Dll文档1.新建一DLL项目dll2.#include"stdafx.h"#include"windows.h"#include"dll.h"#pragma comment(lib,"dll.lib")int _tmain(int argc, _TCHAR* argv[]){HelloWorld();return 0;}3.// dllmain.cpp : 定¡§义°? DLL 应®|用®?程¨¬序¨°的Ì?入¨?口¨²点Ì?。

¡ê#include"stdafx.h"#include"dll.h"#include<windows.h>#include<stdio.h>#include<stdlib.h>void HelloWorld (){MessageBox (0, L"Hello World from DLL!\n", L"Hi", MB_ICONINFORMATION);}BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,DWORD reason /* Reason this function is beingcalled. */ ,LPVOID reserved /* Not used. */ ){switch (reason){case DLL_PROCESS_ATTACH:break;case DLL_PROCESS_DETACH:break;case DLL_THREAD_ATTACH:break;case DLL_THREAD_DETACH:break;}/* Returns TRUE on success, FALSE on failure */return TRUE;}4.生成菜单下的重新生成解决方案,即得到dll和lib文件,如图:至此DLL文件建立完成。

dll(动态链接库)的创建和使用

dll的创建和使用使用C++语言创建dll并使用该dll的演示、说明Dll的创建和使用第一部分创建C风格的dll (4)步骤1:创建dll工程 (4)步骤2:文件改名 (5)步骤3:拷贝文件内容 (6)步骤4:从工程中删掉文件main.cpp,main.h (7)步骤5:继续修改文件mydll.h和mydll.cpp (7)步骤6:编译并生成dll文件 (8)第二部分以间接调用的方式使用.dll (10)步骤1:新建一个控制台工程(UseDll.cbp). (10)步骤2:修改main.cpp。

(11)步骤3:编译,生成UseDll.exe (12)步骤4:拷贝mydll.dll到UseDll.exe所在目录 (13)步骤5:执行UseDll.exe,输出: (13)间接调用Dll的好处 (14)第三部分以直接调用的方式使用.dll (15)步骤1:改写main.cpp (15)步骤2:添加mydll.dll的静态导出库到UseDll工程中 (16)步骤3:编译并执行,输出 (17)直接调用的好处 (18)Dll的优势 (18)调用约定的说明 (18)第四部分创建C++风格的dll(本地方法) (19)步骤1:在mydll.h中新增导出的类 (19)步骤2:在mydll.cpp中实现Cat类 (19)步骤3:编译MyDll,生成mydll.dll,mydll.a (21)第五部分使用本地风格的C++ DLL (22)步骤1:修改UseDll中的main.cpp (22)步骤2:将mydll.a添加到UseDll工程的BuildOptions中 (23)步骤3:编译UseDll工程,生成UseDll.exe (23)步骤4:将MyDll.dll拷贝到UseDll.exe目录下 (23)步骤5:执行UseDll.exe,输出 (23)本地风格的不足 (24)第六部分创建推荐风格的C++ DLL (26)步骤1:修改mydll.h,创建Cat的接口类ICat (26)步骤2:新建类Cat (27)步骤3:实现createCat函数 (29)步骤4:编译,生成mydll.dll (31)第七部分使用推荐风格的C++ DLL (32)步骤1:修改UseDll中的main.cpp (32)步骤2:将第六部分生成的libmydll.a添加到UseDll的BuildOptions中 (33)步骤3:编译UseDll工程,生成useDll.exe (34)步骤4:将第六部分生成的mydll.dll拷贝到UseDll.exe所在文件目录 (34)步骤5:执行,输出 (35)推荐风格的好处: (35)第一部分创建C风格的dll下面以CodeBlocks为例演示说明创建和使用dll,其它开发环境类似步骤1:创建dll工程创建dll工程MyDll.cpp步骤2:文件改名新建两个文件mydll.h和mydll.cpp步骤3:拷贝文件内容将main.h中的核心内容拷贝到mydll.h中再将main.cpp中的部分内容拷贝到mydll.cpp中,并更改include文件名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档