在 VC++ 中创建 DLL (Visual Studio 2008)
Posted
技术标签:
【中文标题】在 VC++ 中创建 DLL (Visual Studio 2008)【英文标题】:Creating DLL in VC++ (Visual Studio 2008) 【发布时间】:2012-01-10 06:32:45 【问题描述】:请帮助我,这真的很烦人,因为我是第一次这样做并且没有经验。
目标:求一个数的阶乘
。 . 第 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 控制台应用程序,应用程序设置为 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(有 2 个库文件,一个是 Object,另一个是 Export)我将所有 4 个从服务器复制到客户端
第 8 步:右键单击客户端项目设置链接器的常规设置并写入我在客户端项目文件夹中复制的 lib 文件的路径
第 9 步:我构建了我得到的项目
错误 1 致命错误 C1083:无法打开包含文件:'iostream.h':没有这样的文件或目录 f:\client\client\mainclass.cpp 2 Client
抱歉发了这么长的帖子。
【问题讨论】:
为什么要创建一个 MFC DLL 以从控制台应用程序调用?另外,显示您要编译的代码。您的包含语句是否如下所示:#include <iostream>
?
不,它是 #include 应该是#include <iostream>
,那么你需要在代码中包含命名空间std::cout
,或者包含using namespace std
语句。
【讨论】:
感谢杰克逊,现在 cout 和 cin 错误不再存在,我正在使用 #include如果你想使用共享库(dll)你不能直接调用阶乘。您必须使用 LoadLibrary 加载 dll,在调用 GetProcAddress 时使用结果句柄和函数名称,并调用返回的函数指针。为了能够按名称加载函数,您应该在 dll 中使用 extern "C" 说明符声明它,因此它的名称将不加修饰地导出。另一种方法是将 .def 文件添加到 dll 项目并使用带序号的 GetProcAddress。我希望这些大体方向对您有所帮助。
【讨论】:
以上是关于在 VC++ 中创建 DLL (Visual Studio 2008)的主要内容,如果未能解决你的问题,请参考以下文章
在启用 CLR 但没有 CRT 的 VC++ 中创建 Win32 dll
在 VS2013 中创建与 VC++ 6.0 向后兼容的 Dll
如何在 Visual C++ 中创建一个 dll? [关闭]