Aud*_*oGL 1 delphi dll static dynamic libraries
我想这是一个常见问题,但谷歌搜索并没有提出解决方案.我只是在加载库时遇到了一些麻烦.
我对该库的来源是使用静态加载,这很好.我正在使用的其余库是动态加载的.
问题是我的程序现在被一个不同的应用程序(主机)加载为一个库(它是一个插件).这意味着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';
Run Code Online (Sandbox Code Playgroud)
程序加载器在系统路径上查找DLL.只需确保您的freetype6.dll(及其所需的DLL)与主机exe位于同一目录中,或者位于文件路径(PATH环境变量)中的目录中.
供参考:http://msdn.microsoft.com/en-us/library/7d83bc18(v = vs.71).aspx
| 归档时间: |
|
| 查看次数: |
2023 次 |
| 最近记录: |