在VC++中创建DLL(Visual Studio 2008)
Creating DLL in VC++ (Visual Studio 2008)
请帮我,这真的很烦人,可能是因为我是第一次做,没有经验。
目的:求一个数的阶乘
。步骤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::cout
或using namespace std
语句。
如果要使用共享库(dll),则不能直接调用factorial。您必须使用LoadLibrary加载dll,在对GetProcAddress的调用中使用结果句柄和函数名称,并调用返回的函数指针。为了能够按名称加载函数,您应该使用外部"C"指定符在dll中声明它,这样它的名称将在没有修饰的情况下导出。另一种选择是将.def文件添加到dll项目中,并将GetProcAddress与序号一起使用。我希望这些大致的指示能对你有所帮助。
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 不同的Visual Studio版本中缺少.dll
- 用Visual Studio在C++中嵌入Julia
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- Visual Studio在尝试读取resource.txt文件时崩溃
- Visual Studio 2017 不允许我创建 C++ 专用模板