Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何设置可执行文件';搜索路径是什么?_Visual Studio 2010_Build - Fatal编程技术网

Visual studio 2010 如何设置可执行文件';搜索路径是什么?

Visual studio 2010 如何设置可执行文件';搜索路径是什么?,visual-studio-2010,build,Visual Studio 2010,Build,我没有使用默认的VisualStudio项目路径将我的程序构建到中,因为我希望模拟一个版本,并编写工具来搜索资源。修改设置后,我将VS输出到正确的文件夹中,并将DLL复制到主文件夹中的bin文件夹中。但是,我无法获取它生成的.EXE来查找DLL,它只会查找它的目录中的内容,但我不想这样混乱。调试器工作正常,但无法独立工作。我如何告诉VS告诉.EXE在哪里找到它的DLL?我必须编辑路径吗?这看起来很混乱,因为我从来没有很好的经验。我已经尝试过Project Settings->VC++目录,但仍然

我没有使用默认的VisualStudio项目路径将我的程序构建到中,因为我希望模拟一个版本,并编写工具来搜索资源。修改设置后,我将VS输出到正确的文件夹中,并将DLL复制到主文件夹中的bin文件夹中。但是,我无法获取它生成的.EXE来查找DLL,它只会查找它的目录中的内容,但我不想这样混乱。调试器工作正常,但无法独立工作。我如何告诉VS告诉.EXE在哪里找到它的DLL?我必须编辑路径吗?这看起来很混乱,因为我从来没有很好的经验。我已经尝试过Project Settings->VC++目录,但仍然找不到它,因为我假设这是针对.LIB文件的

这是我的文件夹层次结构图

-根
--bin
---[必需的DLL]
--数据
---[程序资源(图像、声音、配置等)]
--Program.exe


使用Visual C++ 2010 Express版。 我如何告诉VS告诉.EXE在哪里找到它的DLL

编辑发布运行配置并更改DLL所在的工作目录

您仍然需要通过ide运行exe才能正常工作

我必须编辑路径吗


这与Visual Studio无关。是Windows找不到DLL。它没有理由在任意子目录中查找DLL。另外,还不清楚这些是隐式加载的DLL,还是您自己使用LoadLibrary加载它们


如果使用LoadLibrary(),问题不大,只需传递DLL的完整路径名即可。GetModuleFileName(NULL,…)帮助您构建路径字符串。如果这些是隐式加载的,您将遇到一个大问题。在这种情况下,应该很少有理由不将DLL存储在与EXE相同的目录中。是的,您不想弄乱PATH环境变量。或者是当前的工作目录。

我知道VS并不是在寻找DLL,我只是希望有一个选项可以让它告诉windows使用什么。我不使用LoadLibrary(),但是。。。值得换一下吗?我以前从未见过这种方法。不,使用LoadLibrary是一种非常非常痛苦的使用DLL的方法。在子目录中存储隐式加载的DLL需要10000个点,这是一个很好的理由,让Windows很难找到这些DLL。只有出于某种原因,希望Windows查找另一组DLL时,这才有意义。通常被称为“DLL地狱”的东西。使用PATH环境变量创建DLL地狱。你拒绝的解决方案,因为你可能以前使用过它,并且尝到了地狱的味道?不要这样做。当我使用Java时,我对PATH变量有过不好的体验,Java从来没有为我正确安装过,所以我总是不得不手动安装。我猜我从来没有见过任何C++教程使用LoopRealBug(),因为它创建了你所描述的问题。我最近刚刚涉足DLL和库之类的领域,因为我喜欢可重用代码的想法。从外面看,这似乎简单多了!我以前更改过工作目录,但它破坏了我的资源查找器,它使用工作目录查找它的资源。我将添加我的文件夹的图表,因为我可以看到这可能很难可视化。为什么不使用资源将所有二进制文件合并到一个单独的输出文件夹中呢?建立一个发行版。更新生成配置以使用新的输出文件夹。那么,我应该将二进制文件和资源放在同一主文件夹下吗?我通常只看商业程序是如何工作的,并使用这种技术(我的图表中的一幅图片)。通常,在windows环境中,如果您没有使用LoadLibrary、system Library或PATH中的其他库,您会发现DLL与exe位于同一目录中。您仍然可以将资源保存在单独的子文件夹中,这样您就可以始终相对路径引用它们,并将数据从二进制文件中分离出来。我注意到根文件夹中有一个Steam.exe和一个Steam.dll。bin中有各种其他DLL和另一个.exe。Steam.exe是否可能调用另一个.exe,而.exe引用DLL?我没有理由这样做,但如果这是真的,这将给我一个理由,不必这样组织我的文件夹。