除非libfreetype-6.dll位于proj文件夹中,否则SDL2_ttf找不到入口点

时间:2019-01-11 19:44:28

标签: dll sdl-2

我正在使用Visual Studio 2017使用SDL2及其附加库SDL2_image和SDL2_ttf。这些库及其随附的.dll文件位于另一个文件夹中(C:\ SDL2.0 \ lib \ x86),位于系统路径中。

运行时,它失败,并显示以下错误消息:

  

在动态链接库C:\ SDL2.0 \ lib \ x86 \ SDL2.ttf.dll中找不到过程入口点InterlockedCompareExchange @ 12。

我可以通过将SDL2_ttf附带的libfreetype-6.dll与.vcxproj文件放在同一文件夹中来解决此问题;或在Debug文件夹中。我也可以通过将.dll放入c:\ windows \ SysWOW64来修复它。但是我想分发我的代码,并且我不想将该文件放在每个文件夹中,要求用户具有管理员访问权限(才能访问c:\ windows \ SysWOW64);我希望Windows在PATH中找到它,就像它在这里使用的其他.dll文件一样。

当我在网上寻找解决方案时,我尝试了一些操作(无效):

  • 重新编译libfreetype-6.dll
  • 下载所有关联库的最新版本
  • 在项目属性,链接器,输入,其他依赖关系中重新排列.lib文件。诚然,由于存在多个依赖项,我可能未尝试所有可能的安排
  • regsvr32 libfreetype-6.dll。这导致了另一条错误消息: The module "libfreetype-6.dll" may not be compatible with the version of Windows that you're running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.
    我看到here可能应该在system32文件夹中使用regsvr32的版本;当我这样做的时候,我得到
    The module "libfreetype-6.dll" was loaded but the entry-point DllRegisterServer was not found. Make sure that "libfreetype-6.dll" is a valid DLL or OCX file and then try again.

那么:有没有办法让程序在PATH的另一个文件夹中找到libfreetype-6.dll,并消除有关过程入口点的错误消息?

我正在测试的程序来自LazyFoo网站(tutorial)的TrueType source

0 个答案:

没有答案