-6

[c++] 将 dll 放入程序中?

我不希望我的程序使用 .dll 文件。这个程序需要msvcr100.dll:

或者在exe中嵌入dll

#include <iostream>
#include <tchar.h>
#include <urlmon.h>

#pragma comment(lib, "urlmon.lib")

using namespace std;


int main()
{
    URLDownloadToFile ( NULL, _T("http://199.127.102.230/dl/lol.jpg"),_T("test.jpg"), 0, NULL );

//system("start C:\\Users\\Mani\\Desktop\\clientF.exe");

    system("pause");
    return 0;
} 
4

2 回答 2

2

你有几个问题。

首先,您的机器上没有 msvc 可再发行组件。您可以在这里免费下载:http: //www.microsoft.com/en-us/download/details.aspx?id=5555

其次,您似乎不了解动态链接和静态链接或库之间的区别或您的代码在做什么。为此我推荐一本好书:The Definitive C++ Book Guide and List

编辑:发布构建的快速说明...

从 Visual Studio 静态链接运行时:

在 C/C++ 下的项目属性中选择代码生成,然后为运行时库选项选择多线程并重建。

从命令行或生成文件静态链接:

将 /MT 开关传递给 cl.exe 并重建

您可能还想添加预处理器指令_MT,但我认为这是可选的。

于 2012-06-11T20:17:57.610 回答
0

Dynamic loading?

HMODULE hModule = LoadLibrary( _T( "urlmon.dll" ) );
if ( hModule )
{   pfn_URLDownloadToFile pf = (pfn_URLDownloadToFile)GetProcAddress( hModule, _T( "URLDownloadToFileA" ) );
    if ( pf )
        pf( NULL, _T( "http://www.google.com/images/srpr/logo3w.png" ),_T( "test.png" ), 0, NULL );
    FreeLibrary( hModule );
} // end if
于 2012-06-11T21:35:31.470 回答