Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在VC+中创建动态链接库+;(Visual Studio 2008)_C++_.net_Visual Studio 2008_Visual C++_Dll - Fatal编程技术网

C++ 在VC+中创建动态链接库+;(Visual Studio 2008)

C++ 在VC+中创建动态链接库+;(Visual Studio 2008),c++,.net,visual-studio-2008,visual-c++,dll,C++,.net,Visual Studio 2008,Visual C++,Dll,请帮助我,这真的很烦人,可能是因为我是第一次做这件事,而且没有经验 目的:求一个数的阶乘 。 . 步骤1:在模板MFC DLL中创建VC++MFC类型的新项目 步骤2:然后创建一个常规DLL(MFC共享),我说是的 步骤3:使用以下代码创建头文件(ServerHeader.h) _declspec (dllimport) int factorial(int no); 步骤4:我用代码创建cpp文件(ServerFactorial.cpp) #include "stdafx.h" _decls

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

目的:求一个数的阶乘

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

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

}
第五步:我建立了项目,一切都很好

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

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


return no == 0 ? 1 : no * factorial(no-1);
}
#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

}
#包括“ServerHeader.h”
#包括
void main()
{
不,我;
库特诺;
i=factorial(n);//调用该方法

cout应该是
#include
,然后您需要在代码中包含名称空间,
std::cout
,或者包含
using namespace std
语句。

如果您想使用共享库(dll)不能直接调用factorial。必须使用LoadLibrary加载dll,在对GetProcAddress的调用中使用结果句柄和函数名,并调用返回的函数指针。若要按名称加载函数,应在dll中用外部“C”声明它specificator,因此它的名称将不加修饰地导出。另一种方法是在dll项目中添加一个.def文件,并使用带有序号的GetProcAddress。我希望这些一般说明能对您有所帮助。

为什么要创建一个MFC dll来从控制台应用程序调用?同时,显示您试图编译的代码。您的代码是否包括语句是这样的:
#include
?不,它是#include,但我用#include和#include“iostream.h”和#include“iostream”试过了,但我得到了同样的错误Hi Cody Gray,我再次尝试,当我使用#include时,它说找不到iostream.h,当我使用#include时,它说“cout”和“cin”无法识别当您的VS 2008安装可能有问题时。您能编译其他应用程序吗?这是我第一次安装VS 2008。但为什么会有问题?谢谢Jackson,现在cout和cin错误不再存在,我正在使用#include,但现在我收到以下错误错误错误错误1错误LNK2019:未解析的外部符号\u main在函数\uuuuu tmainCRTStartup msvcrdt.lib客户端错误2致命错误LNK1120:1未解析的外部符号F:\Client\Client\ClientMain.exe 1 Client这通常表示您编写了控制台应用程序,但告诉VS构建Windows应用程序。如果您在LNK之前搜索错误文本1120,你会发现很多解释和解决方案。感谢杰克逊的帮助,主要问题是写控制台应用程序和告诉VS关于Windows应用程序。真正愚蠢的,无论如何,我有2本关于C++的书,它们使用的是,也许包括因为他们必须考虑Turbo C++编译器,这次我在VS上做C++。这两种语法在语法上都是不同的,我们会得到错误。我有2个问题(1),我们可以将VC++中的Turbo C++编译器集成在一起,这样我就可以使用旧的语法……(2)或者任何关于C++的好书,考虑到微软编译器和IDE,就像V.S.谢思认为你的书可能相当旧,h表单已经被贬低了一段时间(见这里:)我认为你不能把Tubo C++与VS集成在一起,我当然不想尝试这样做。谷歌对于VS2008和C++书籍来说,有很多,但是我自己没有任何一个,我不愿意推荐一个,如果我发现Ivor Horton的书写得好,他有一个VS2008 C++的。@ RameshwarSoni:你可以找到一本书。RE:扔掉Turbo C++和任何一本关于它的书:这些已经超过20年了,完全过时了。