请帮助我,这真的很烦人,可能是因为我第一次这样做,没有经验。
目标:找到数字的阶乘
。 。 步骤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);
}
第5步:我构建项目,一切都很好
步骤6:我创建VC ++ Win32的另一个项目客户端,并在模板Win32 Console Application中将应用程序设置为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
}
STEP 7:我复制了ServerHeader.h,Server.dll,Server.lib(有2个库文件,一个是Object,另一个是Export)我将所有4个从服务器复制到客户端
步骤8:右键单击Client项目设置链接器的常规设置并写入我在客户端项目文件夹中复制的lib文件的路径
第9步:我构建我的项目
错误1致命错误C1083:无法打开包含文件:'iostream.h':没有这样的文件或目录f:\ client \ client \ mainclass.cpp 2客户端
很抱歉这么长的帖子。
答案 0 :(得分:2)
应该是#include <iostream>
,然后您需要在代码中包含命名空间std::cout
或包含using namespace std
语句。
答案 1 :(得分:1)
如果您想使用共享库(dll),则无法直接调用factorial。您必须使用LoadLibrary加载dll,在调用GetProcAddress时使用结果句柄和函数名称并调用返回的函数指针。为了能够按名称加载函数,你应该使用extern“C”特定器在dll中声明它,因此它的名称将被导出而不带装饰。另一种方法是将.def文件添加到dll项目中,并使用带有序数的GetProcAddress。我希望这些一般性指示对你有帮助。