当前位置:编程学堂 > 如何在vs2010中生成dll文件路径_VS2010下生成dll的方法

如何在vs2010中生成dll文件路径_VS2010下生成dll的方法

  • 发布:2023-10-02 05:03

1.首先创建一个生成dll的项目:打开VS2010,创建dll项目有两种方式,基于MFC DLL和基于Win32控制台应用程序,这里我们选择基于Win32控制台构建。

a。文件--新建--项目(项目名为myAPI)--Visual C++--Win32--选择Win32控制台应用程序;

b。下一步如下图所示。选择 DLL 作为程序类型。如果没有特殊需要,选择一个空项目来完成。项目已创建;

2。定义头文件:将头文件myAPI.h添加到工程中,内部添加如下代码,

#ifndef _DLL_API

#define _DLL_API _declspec(dllexport)

#else

#define _DLL_API _declspec(dllimport)

#endif

_DLL_API int ADD(int a,int b);

内部定义了一个ADD()函数接口。如果需要添加其他功能接口,可以继续定义,比如

_DLL_API int MINUS(int a,int b);

_DLL_API int otherfunc(int,int,int);

3。定义源文件:将对应的源文件myAPI.cpp添加到工程中,然后在源文件中定义函数,内部添加如下代码,

#include "myAPI.h"

1。首先创建生成dll的项目:打开VS2010,创建dll项目有两种方式,基于MFC DLL和基于Win32控制台应用程序。这里我们选择基于Win32控制台构建。 ? ? A。文件--新建--项目(项目名为myAPI)--Visual C++--Win32--选择Win32控制台应用程序; ? ? b.接下来,如下图下一步,程序类型选择DLL,如果没有特殊需要,选择一个空项目完成,项目就建立了;

2.定义头文件:将头文件myAPI.h添加到工程中?内部添加以下代码,

[cpp]?

普通视图

?复制

#ifndef?_DLL_API?? #define?_DLL_API?_declspec(dllexport)?? #别的?? #define?_DLL_API?_declspec(dllimport)?? #万一?? ?? _DLL_API?int?ADD(int?a ,int?b);??

内部定义了一个ADD()函数接口。如果需要添加其他功能接口,可以继续定义,比如

[cpp]?

普通视图

?复制

_DLL_API?int?MINUS(int?a,int?b);?? _DLL_API?int?otherfunc(int,int,int);??

3。定义源文件:将对应的源文件myAPI.cpp添加到工程中?然后在源文件中定义函数,内部添加如下代码,

[cpp]?

普通视图

?复制

#include?"myAPI.h"?? ?? int?ADD(int?a,int?b){?? ???返回?a+b;?? }??

4。编译通过并生成dll:这里有个小建议,因为dll工程不会生成exe,API无法实时测试,所以建议一般情况下调试测试通过API的函数体代码先空项目,然后再创建一个dll项目,直接编译,这样比较方便可靠。回到正题,dll工程编译通过后,有用的东西就是Debug目录下的myAPI.h头文件和新生成的myAPI.dll和myAPI.lib文件,

5.调用dll:为了测试我们刚刚生成的dll,新建一个项目mytest。包含声明 myAPI.h 头文件,其中存储了定义的接口。将myAPI.dll文件放入新工程的Debug文件夹中(执行.exe时需要调用,如果新工程没有编译,则没有Debug文件夹,编译后,该文件夹可用然后将放置dll文件)。将 myAPI.lib 文件放在与源文件和头文件相同的路径中(编译期间需要)。接下来需要将.lib资源添加到项目中,两种方法。

? ?一种方法是在项目属性-链接器-输入中的“附加依赖项”中添加myAPI.lib文件(当然也有不设置此项也编译成功的经验,但不推荐); ? ?另一种调用方式是在新建项目的主程序中添加如下命令,无需设置依赖;

[cpp]?

普通视图

?复制

#pragma?comment(lib,"myAPI.lib")??

至此,所有任务完成。编译通过后就可以正常使用自己定义的API了~

1。首先创建生成dll的项目:打开VS2010,创建dll项目有两种方式,基于MFC DLL和基于Win32控制台应用程序。这里我们选择基于Win32控制台构建。

? ? A。文件--新建--项目(项目名为simple_Dll)--Visual C++--Win32--选择Win32控制台应用程序;

? ? b.接下来,进入下一步,如下图所示。选择 DLL 作为程序类型。如果没有特殊需要,选择一个空项目来完成。项目已创建;

2。定义头文件:将头文件SimpleDll.h添加到工程中?内部添加以下代码,

#ifndef _DLL_API

#define _DLL_API _declspec(dllexport)

#其他

#define _DLL_API _declspec(dllimport)

#endif

#include

#包括

#包括

#包括

_DLL_API int add(int x, int y); //简单方法

_DLL_API const wchar_t* getPlayUrl(const wchar_t* mgrIp, 长mgrPort, 长materialId);

_DLL_API const char* getUrl(const char* mgrIp, long mgrPort, long MaterialId);

3。定义源文件:将对应的源文件SimpleDll.cpp添加到工程中?然后在源文件中定义函数,内部添加如下代码,

#include "SimpleDLL.h"

int add(int x, int y)

{

返回x+y;

}

const wchar_t* getPlayUrl(const wchar_t* mgrIp, 长mgrPort, 长materialId)

{

静态 wchar_t url[260] = { 0 };

wcscpy_s(url, L"http://中文");

wcscat_s(url, mgrIp);

wcscat_s(url, L":");

wchar_t szPort[20] = { 0 };

_ltow_s(mgrPort, szPort, 10);

wcscat_s(url, szPort);

返回网址;

}

const char* getUrl(const char* mgrIp, 长mgrPort, 长materialId)

{

静态字符 url[260] = { 0 };

strcpy_s(url, "http://中文");

strcat_s(url, mgrIp);

strcat_s(url, ":");

char szPort[20] = { 0 };

_ltoa_s(mgrPort, szPort, 10);

strcat_s(url, szPort);

返回网址;

}

4。编译通过并生成dll:这里有个小建议,因为dll工程不会生成exe,API无法实时测试,所以建议一般情况下调试测试通过API的函数体代码先空项目,然后再创建一个dll项目,直接编译,这样比较方便可靠。回到正题,dll工程编译通过后,有用的东西就是Debug目录下的SimpleDll.h头文件和新生成的Simple_Dll.dll和Simple_Dll.lib文件,

5.调用dll:为了测试我们刚刚生成的dll,新建一个项目mytest。包含声明 SimpleDll.h 头文件,其中存储了定义的接口。将simple_Dll.dll文件放入新工程的Debug文件夹中(执行.exe时需要调用。新工程如果不编译,则不会有Debug文件夹,编译后,该文件夹可用然后将放置dll文件)。将Simple_Dll.lib文件放在与源文件和头文件相同的路径中(编译期间需要)。接下来需要将.lib资源添加到项目中,两种方法。

? ?一种方法是在项目属性-链接器-输入中的“附加依赖项”中添加Simple_Dll.lib文件(当然也有不设置此项编译成功的经验,但不推荐); ? ?另一种调用方式是在新建项目的主程序中添加如下命令,无需设置依赖;

#pragma comment(lib, "Simple_Dll.lib") //添加lib文件引用

6.测试

#include "SimpleDll.h" //添加头文件引用

#pragma comment(lib, "Simple_Dll.lib") //添加lib文件引用

#包括

#包括

int main()

{

setlocale(LC_ALL, "chs"); //配置本地化信息为简体中文,否则打印出来的中文会乱码

wprintf(L"getPlayUrl: %s\r\n", getPlayUrl(L"127.0.0.1", 10087, 1));

printf("getUrl: %s\r\n", getUrl("127.0.0.1", 10087, 1));

系统(“暂停”);

返回0;

}

相关文章

最新资讯