这是我的代码 -
#include "main.h"
#include <fstream>
using namespace std;
extern "C" __declspec(dllexport) BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
ofstream outfile;
outfile.open("E:\\temp\\DllMain.txt");
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
所以问题是,如果安装了 Visual Studio,这个函数工作正常,我可以在 e:\temp\ 文件夹中创建 DllMain.txt,但如果没有安装 Visual Studio,函数调用有问题。Explorer 无法调用此函数。更多信息在我正在尝试的编辑部分中给出。
我正在使用以下设置构建一个 dll 文件,请检查此链接
Editted Information ::
我正在为邮件客户端实现 Windows 的“发送到”协议。所以我需要构建一个 dll 并且我必须在 Windows 中将我的应用程序注册为电子邮件客户端。因此,如果用户为 Outlook 和 Thunderbird 等默认电子邮件客户端选择我的应用程序,我需要一个 dll 来执行某些任务。
示例 - 选择一个文件 ->(右键单击)发送到 -> 邮件收件人。
这里资源管理器调用 dll 文件。如果安装了视觉工作室,则完美无缺。在未安装 Visual Studio 的电脑上尝试,结果错误消息,然后我在安装 Visual Studio 后尝试并得到了我想要的结果。
我不想强迫我的用户安装 MSVC 运行时。因为如果您了解 Thunderbird(Mozilla 产品),那么 Thunderbird 可以在没有 MSVC 运行时的情况下完成这项工作。