大佬教程收集整理的这篇文章主要介绍了Visual Studio 中是否有影响自定义 DLL 函数创建文件的位置的设置?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我编写了自定义 DLL,其中包含一个脚本语言的函数,可与 pdf 一起使用。当我调用我的 create 函数时,它可以工作,但它会在我的 C++ 项目调试目录中创建 pdf。我没有指定一个完全合格的路径作为即时测试。是否有可以在 Visual studio 中控制它并以某种方式在 dll 中的设置?如果我指定一个完整的路径,它会返回一个错误,假设因为它是从我的项目文件夹中开始的......有人知道吗?
@H_449_5@mV_EL_FunctionParameter pdfApCreate_parameters[] = { { "filename",8,EPF_norMAL },{ "LOCATIOn",EPF_norMAL } }; __declspec(dllexport) voID bi_pdfApCreate(mvProgram prog,mvVariableHash parameters,mvVariable returnvalue,void **) { int ret = LoadApWDll(); if (!ret) { mvVariable_SETVALue_Integer(returnvalue,33333); return; } // inputS int filename_len; const char* filename; int LOCATIOn; // OUTPUT long ID; // Not needed anymore,for a depricated Miva API function. //char* resolved_filename = NulL; //int resolved_filename_len; filename = mvVariable_Value(mvVariableHash_Index(parameters,0),&filename_len); LOCATIOn = file_LOCATIOn(mvVariableHash_Index(parameters,1)); //mvfile_Resolve(prog,LOCATIOn,filename,filename_len,&resolved_filename,&resolved_filename_len); ID = pApCreate((char*)fileName); if (ID) { mvProgram_Free(prog,const_cast<char*>(fileName)); } mvVariable_SETVALue_Integer(returnvalue,ID); }
这是人们离开的地方。这是为 Miva 脚本语言创建函数。这是我用来构建它的自定义 API。 这是 Miva Mia 的图片。
看起来您正在写入 Win32(相对于 .Net 或 .Net Core)。
我不推荐“硬编码路径”——这太脆弱了。
相反,我会建议以下之一:
在 Win32 中获取路径:
TCHAR szFilename[MAX_PATH];
GetModuleFilename(NULL,szFilename,MAX_PATH)
获取 .Net 中的路径:
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecuTingAssembly().GetName().CodeBasE)
如果您选择使用环境变量:
另一种选择是让 .exe 确定路径,并将路径字符串作为函数参数传递给 .dll :)
,Visual studio 有一个指定 Working Directory
的设置,但仅在从 Visual studio 运行时使用。
但是,您永远不要依赖当前的工作目录。指定完整路径。
请显示“返回错误”的代码 - 这可能是您的错。
以上是大佬教程为你收集整理的Visual Studio 中是否有影响自定义 DLL 函数创建文件的位置的设置?全部内容,希望文章能够帮你解决Visual Studio 中是否有影响自定义 DLL 函数创建文件的位置的设置?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。