我想这是一个常见问题,但谷歌搜索并没有提出解决方案。我只是在加载库时遇到了一些麻烦。
我为该库提供的资源是使用静态加载,这很好。我正在使用的其余库是动态加载的。
问题是我的程序现在被另一个应用程序(主机)作为库(它是一个插件)加载。这意味着 HOST 可执行文件的目录不是我的应用程序的程序目录。
静态加载的库(只是一个用于字体渲染的简单库)位于我的程序目录中,当我的软件作为插件加载时,找不到它。当我将我的软件作为“独立”程序(没有主机)加载时,没有问题。
我可以通过将“缺失”库放入主机应用程序的文件夹来解决问题,但这是一个糟糕的解决方案。
我还可以通过提供库名称的直接路径来解决它,但这也是一个糟糕的解决方案。我不知道最终用户将在哪里安装我的软件。
有没有办法解决这个问题而不必重写代码来使用动态加载?
要继续使用静态加载,必须注册库吗?我认为注册这个库太具侵略性了,因为其他程序可能正在使用它的不同版本。
const
ft_lib = 'freetype6.dll'; //here is our problem. I could put a direct path
//here, to fix it, but I will not know this path
//on an end-user's machine
type
FT_Library = Pointer;
function FT_Init_FreeType(out alibrary : FT_Library ) : FT_Error;
cdecl; external ft_lib name 'FT_Init_FreeType';