首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio中是否有影响自定义DLL函数创建文件的位置的设置?

Visual Studio中是否有影响自定义DLL函数创建文件的位置的设置?
EN

Stack Overflow用户
提问于 2021-05-06 07:32:06
回答 2查看 63关注 0票数 1

当我调用我的create函数时,它可以工作,但它会在我的C++项目调试目录中创建pdf。我没有在im测试中指定完全限定的路径。有没有一个设置可以在visual studio中控制它并以某种方式出现在dll中?如果我指定了一个完整路径,它会返回一个错误,假设是因为它是在我的项目文件夹中启动的…有人知道这件事吗?

代码语言:javascript
复制
MV_EL_FunctionParameter pdfApCreate_parameters[] = {
    { "filename", 8, EPF_NORMAL },
    { "location", 8, 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,im用来构建它。这是一张Miva Mia的照片。

EN

回答 2

Stack Overflow用户

发布于 2021-05-06 07:45:22

看起来你在写Win32 (对比.Net,或者.Net核心)。

我不推荐“硬编码路径”--那太脆弱了。

相反,我会建议以下其中之一:

  • 从环境变量中读取路径
  • 使用相对于.exe

的路径

要获取Win32中的路径,请执行以下操作:

代码语言:javascript
复制
TCHAR szFileName[MAX_PATH];
GetModuleFileName(NULL, szFileName, MAX_PATH)

要获取.Net中的路径,请执行以下操作:

代码语言:javascript
复制
System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)

如果选择使用环境变量:

  • 您可以在Visual Studio
  • 中为"production“设置变量,您可能会从.bat文件中调用.exe,并在.bat文件

中设置环境变量

另一种选择是让.exe确定路径,并将路径字符串作为函数参数传递给.dll :)

票数 2
EN

Stack Overflow用户

发布于 2021-05-06 07:35:04

Visual Studio有一个指定Working Directory的设置,但该设置仅在从Visual Studio运行时使用。

但是,您永远不应该依赖当前的工作目录。指定完整路径。

请显示“返回错误”的代码-这可能是您的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67410031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档