在VC++中创建DLL(Visual Studio 2008)

Creating DLL in VC++ (Visual Studio 2008)

本文关键字:Visual Studio 2008 DLL VC++ 创建      更新时间:2023-10-16

请帮我,这真的很烦人,可能是因为我是第一次做,没有经验。

目的:求一个数的阶乘

。步骤1:创建类型为VC++MFC和模板中MFC DLL 的新项目

步骤2:然后来创建一个常规DLL(MFC共享)我说是

步骤3:我用以下代码创建头文件(ServerHeader.h)

_declspec (dllimport) int factorial(int no);

第4步:我使用代码创建cpp文件(ServerFactorial.cpp)

#include "stdafx.h" 
_declspec (dllexport) int factorial(int no)
{

return no == 0 ? 1 : no * factorial(no-1);
}

第五步:我构建项目,一切都很好

步骤6:我创建了另一个项目VC++Win32的客户端和模板中的Win32控制台应用程序,应用程序设置为EMPTY project,并创建了一个新的cpp文件(MainClass.cpp),代码为

#include "ServerHeader.h"
#include <iostream.h>
void main()
{

int no,i;

cout<<"Enter number";

cin>>no;

i=factorial(n);  // calling the method

cout<<endl<<i;   // printing ans
}

步骤7:我复制ServerHeader.h、Server.dll、Server.lib(有两个库文件,一个是Object,另一个是Export)我将所有4个文件从服务器复制到客户端

步骤8:右键单击客户端项目设置链接器的常规设置,并写入我在客户端项目文件夹中复制的lib文件的路径

步骤9:我建立我的项目我得到

错误1致命错误C1083:无法打开包含文件:"iostream.h":没有这样的文件或目录f:\client\client\mainclass.cpp 2客户端

抱歉发了这么长的帖子。

应该是#include <iostream>,然后需要在代码中包含名称空间std::coutusing namespace std语句。

如果要使用共享库(dll),则不能直接调用factorial。您必须使用LoadLibrary加载dll,在对GetProcAddress的调用中使用结果句柄和函数名称,并调用返回的函数指针。为了能够按名称加载函数,您应该使用外部"C"指定符在dll中声明它,这样它的名称将在没有修饰的情况下导出。另一种选择是将.def文件添加到dll项目中,并将GetProcAddress与序号一起使用。我希望这些大致的指示能对你有所帮助。