c ++把dll放在程序中?

时间:2012-06-11 20:07:21

标签: c++ dll

[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;
} 

2 个答案:

答案 0 :(得分:2)

你有一些问题。

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

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

修改:发布版本的快速说明...

从Visual Studio静态链接运行时:

在C / C ++下的项目属性中选择Code Generation,然后在Runtime Library选项中选择Multi-threaded and rebuild。

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

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

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

答案 1 :(得分:0)

动态加载?

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