首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Freetype2未在Windows上正确链接

Freetype2未在Windows上正确链接
EN

Stack Overflow用户
提问于 2022-12-02 19:02:34
回答 1查看 35关注 0票数 0

为了让freetype2在Windows 32位上工作,我已经和它打了一个星期了,但它就是不行。我的CMakeLists.txt是这样的:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.0.0)
set(CMAKE_CXX_STANDARD 17)

project(template-project) # change the name here

file(GLOB_RECURSE SOURCE_FILES src/*.cpp)
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})

list(APPEND CMAKE_PREFIX_PATH "D:/Installs/ProgFiles/glew")

find_package( OpenGL REQUIRED )

include_directories( ${OPENGL_INCLUDE_DIRS} )

# this is so stupid
set(CMAKE_SIZEOF_VOID_P 4)

if (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
  # ensure 32 bit on clang
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -target i386-pc-windows-msvc")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -target i386-pc-windows-msvc")
  add_definitions("--target=i386-pc-windows-msvc")
endif()

set(FT_DISABLE_HARFBUZZ TRUE)

target_include_directories(${PROJECT_NAME} PRIVATE
  libraries/minhook/include
  libraries/gd.h/include
  libraries/gd.h/
  libraries/imgui
  libraries/glad/include
  libraries/stb
  libraries/freetype2/include
)

add_subdirectory(libraries/minhook)
add_subdirectory(libraries/cocos-headers)
add_subdirectory(libraries/glfw)
add_subdirectory(libraries/glm)
add_subdirectory(libraries/freetype2)

target_link_libraries( ${PROJECT_NAME} ${OPENGL_LIBRARIES} glfw )
if( MSVC )
    if(${CMAKE_VERSION} VERSION_LESS "3.6.0") 
        message( "\n\t[ WARNING ]\n\n\tCMake version lower than 3.6.\n\n\t - Please update CMake and rerun; OR\n\t - Manually set 'GLFW-CMake-starter' as StartUp Project in Visual Studio.\n" )
    else()
        set_property( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT GLFW-CMake-starter )
    endif()
endif()

target_link_libraries(${PROJECT_NAME} opengl32.lib minhook cocos2d rpcrt4.lib glm ${PROJECT_SOURCE_DIR}/libraries/freetype2/objs/Win32/Release/freetype.lib)

输出中最大的问题是以下几行:

代码语言:javascript
运行
复制
[cmake] -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
[cmake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) 
[cmake] -- Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR) 
[cmake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) 
[cmake] -- Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR) 
[cmake] -- Could NOT find BrotliDec (missing: BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES) 

我在窗户上,完全不知道怎么修理这些东西。我尝试过通过mingw32安装zlib,并尝试以类似min钩子的方式链接它,但没有结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-03 16:33:56

在使用MinGW时,我推荐一种与手动下载开源依赖项不同的方法。不是搜索单个二进制下载,而是使用msys2安装MinGW,并对所有依赖的开源库使用msys2的包管理。

第一步是删除当前的MinGW安装,以便您的路径中没有冲突的/可能不兼容的MinGW dll,这可能会在执行程序时引起问题。

之后安装msys2:How to install MinGW-w64 and MSYS2?

然后,要安装32位的依赖项,请打开默认安装在"C:\msys64\mingw32.exe“中的mingw32终端,并使用msys2 pacman的包管理器安装依赖的包。

msys2的网页在这个页面的顶部中心有一个方便的包搜索功能:https://packages.msys2.org/queue

让我们从依赖项中的zlib开始。在“搜索”框中键入zlib并按“搜索”。然后,键入mingw-w64-zlib,查找i686包,以便为32位mingw找到正确的包。我找到了用于mingw32的zlib的以下链接,页面如下:https://packages.msys2.org/package/mingw-w64-i686-zlib?repo=mingw32

页面中心列出的安装说明如下:pacman -S mingw-w64-i686-zlib

因此,将此命令复制到mingw32终端:

代码语言:javascript
运行
复制
JMDLAPTOP1+dresc@JMDLAPTOP1 MINGW32 ~
# pacman -S mingw-w64-i686-zlib
resolving dependencies...
looking for conflicting packages...

Packages (1) mingw-w64-i686-zlib-1.2.13-2

Total Download Size:   0.10 MiB
Total Installed Size:  0.39 MiB

:: Proceed with installation? [Y/n]

按Y键安装此软件包。

代码语言:javascript
运行
复制
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
 mingw-w64-i686-zlib-1.2.13...   102.8 KiB   126 KiB/s 00:01 [###############################] 100%
(1/1) checking keys in keyring                               [###############################] 100%
(1/1) checking package integrity                             [###############################] 100%
(1/1) loading package files                                  [###############################] 100%
(1/1) checking for file conflicts                            [###############################] 100%
(1/1) checking available disk space                          [###############################] 100%
:: Processing package changes...
(1/1) installing mingw-w64-i686-zlib                         [###############################] 100%

JMDLAPTOP1+dresc@JMDLAPTOP1 MINGW32 ~

继续对其他依赖包进行类似的处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74660389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档