首页 文章

在VC中创建DLL(Visual Studio 2008)

提问于
浏览
-1

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

目标:找到一个数字的阶乘

. . 步骤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);
}

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

步骤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

}

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

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

第9步:我 Build 我的项目

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

对不起这么长的帖子 .

2 回答

  • 1

    它应该是 #include <iostream> 然后您需要在代码中包含命名空间 std::cout 或包含 using namespace std 语句 .

  • 2

    如果要使用共享库(dll),则无法直接调用factorial . 您必须使用LoadLibrary加载dll,在调用GetProcAddress时使用结果句柄和函数名称并调用返回的函数指针 . 为了能够按名称加载函数,您应该使用extern“C”特定器在dll中声明它,因此它的名称将被导出而不进行装饰 . 另一种方法是将.def文件添加到dll项目中,并使用带有序数的GetProcAddress . 我希望这些一般性指示对您有所帮助 .

相关问题