切换启动项目时,Dll访问不工作。

问题描述 投票:-1回答:1

我目前正在开发一个使用Ghost Script DLL的程序,通过这样导入。

[DllImport("gsdll32.dll", EntryPoint = "gsapi_init_with_args")]

现在,当我在我的解决方案中设置直接使用这个的项目时(位于目录下的...\source\repos\uo_test_viewer\omr_scanner\omrmarkengine-master)作为启动项目,一切都很正常。然而,当我把启动项目改为位于 ...\source\repos\uo_test_viewer\UOTestViewer我得到以下错误。

The gsdll32.dll wasn't found in the default search path or is not in correct version 

(doesn't expose required methods). Please download at least the version 8.64 from the original website.

唯一被改变的是,当我把这个项目设置为启动项目时,我直接运行它 -- 而在不工作的项目中,我创建了一个使用Ghost Script实现的形式的对象。有人知道问题出在哪里吗?

我相信我已经提供了所有必要的信息,但如果还需要其他信息,请告诉我。预先感谢您的回答

c# visual-studio dll ghostscript
1个回答
0
投票

DllImport首先在当前工作目录中查找,然后在搜索路径($PATH)环境变量中查找。

当你在包含 Ghostscript DLL 的文件夹中启动你的应用程序时,Windows API 调用 DllImport 会在当前工作目录中查找,并找到 Ghostscript DLL,因此它会加载它。

当你在一个不包含Ghostscript DLL的目录中启动时,那么DllImport在当前工作目录中查找,并没有找到DLL。然后,它搜索搜索路径,这大概找不到Ghostscript DLL,所以你得到一个错误。

你需要确定当前工作目录中有Ghostscritp DLL的副本,或者DLL在搜索路径上,或者你需要在DllImport的第一个参数中提供Ghostscript DLL的完全限定路径。

如果您正在考虑分发此应用程序,请阅读 AGPL 许可,以确保您遵守使用 Ghostscript 的条款。

© www.soinside.com 2019 - 2024. All rights reserved.