C++ Cli WebClient 不在 dll 中工作

C++ Cli WebClient not working in a dll

我正在尝试使用 C++/Cli 中的 WebClient 从网址下载字符串。 但是,在将 dll 注入本机进程后它失败了。

这是我的代码:

#include <Windows.h>

using namespace System;
using namespace System::Net;
using namespace System::Windows;
using namespace System::Windows::Forms;

BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL,_In_ DWORD     fdwReason,_In_ LPVOID    lpvReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH) {
        System::Windows::Forms::MessageBox::Show("test");
        WebClient web;
        String^ Data = web.DownloadString("http://www.google.com");
        System::Windows::Forms::MessageBox::Show(Data);
    }
    return TRUE;
}

在初始化数据字符串之前,它可以正常工作,但由于某种原因,执行会在那里停止。 MessageBox::Show("test");虽然有效,但之后什么都没有。 可能是什么原因造成的?

事实证明,您只需要 link 您的 managed/native 混合 dll 与 winsock 库 (ws2_32.lib) 并创建一个单独的下载线程。