使用和不使用visual studio调用dll文件
Call dll file with and without visual studio
这是我的代码-
#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,函数调用有问题。资源管理器无法调用此函数。更多信息在我尝试的编辑部分给出。
我正在用以下设置构建一个dll文件,请检查此链接
使dll 的属性设置
Editted Information ::
我正在为邮件客户端实现windows的"发送到"协议。所以我需要建立一个dll,我必须在windows中将我的应用程序注册为电子邮件客户端。所以,如果用户选择我的应用程序作为默认的电子邮件客户端,如outlook和thunderbird,我需要一个dll来完成一些任务。
示例-选择一个文件->(右键单击)发送给->邮件收件人
此处资源管理器调用dll文件。如果安装了visual studio,效果会很好。在没有安装Visual studio的电脑上尝试,结果出现错误消息,之后我在安装Visual studio后尝试,得到了我想要的结果。
我不想强迫我的用户安装MSVC运行时。因为如果你知道thunderbird(Mozilla产品),Thunderbirds可以在没有MSVC运行时的情况下完成这项工作。
您的应用程序或DLL需要安装MSCV运行时。根据VS版本的不同,您可以将其作为可重新分发文件。例如,对于VS2008,您需要:https://www.microsoft.com/en-us/download/details.aspx?id=5582
如果你想分发你的DLL(或你的应用程序),那么你应该为你的程序创建一个安装程序,在需要的时候安装运行时。
**添加**:如果希望避免安装运行时DLL,还可以更改C++编译器设置。选择"代码生成"选项卡,然后选择运行时的相应非DLL版本。这增加了DLL的大小,但有助于避免依赖关系。无论如何,我建议创建一个安装程序。
要在没有MSVC的窗口中运行dll,需要使用Release Configuration构建dll。
您可以从选择"项目"->"属性"->"配置管理器"->"活动解决方案配置"更改此项,然后更改为"发布"(如果未选中)。
如果未安装MSVC,并且dll为调试配置,则资源管理器无法读取dll,因此dll必须仅为发布配置。
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 将 dll 文件注入 UWP
- 从 .lib 文件创建一个.dll文件
- 使用dll源代码C++调试dll文件
- 如何将我的程序转换为.dll文件并使用rundll32.exe在cmd中运行它?
- 提升 Python 找不到 dll 文件
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- 尝试在 python 中正确加载和使用 dll 文件
- 如何在运行时从 c++ 中的 DLL 文件创建对象?
- 是否可以单步执行.dll文件中定义的成员函数?
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- 设置所需DLL文件的自定义路径:电子应用
- LUA5.3 DLL文件中缺少名称
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- 将字符串从 C# 发送到 dll 文件C++
- DLL文件中函数的预期行为在C中编写并从CPP文件打电话
- 如何在VS项目中静态链接没有dll文件的cpprest?
- 加载C DLL文件时,如何修复异常_access_violation
- 编译时如何隐藏DLL文件中的字符串?
- 找不到 C# C++ DLL 文件