小编h_b*_*h_b的帖子

针对dll/lib的cmake链接

我的cmake的输出是一个静态库.我正在创建它:

add_library(myMainLib STATIC ${BACKEND_SOURCES})
Run Code Online (Sandbox Code Playgroud)

当我尝试让myMainLib链接到第三方lib/dll时出现问题.dll文件将在运行时找到,但是,我正在尝试导入/链接lib文件,但没有成功.我的第三方库是SDL2和SDL2 NET.

我认为这是直截了当的,并且已经用尽了我在网上找到的所有方法.都失败了.我尝试过的列表如下.请告诉我我做错了什么.

  1. 简单的方法,使用target_link_libraries

    add_library(myMainLib STATIC ${BACKEND_SOURCES})
    
    target_link_libraries(myMainLib path_to_thirdPartyLib/thirdParty.lib)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 根据cmake docs

    add_library(myMainLib STATIC ${BACKEND_SOURCES})
    
    add_library(Third_Party SHARED IMPORTED)
    
    set_property(TARGET Third_Party PROPERTY IMPORTED_LOCATION path_to_thirdPartyLib/thirdParty.dll)
    
    set_property(TARGET Third_Party PROPERTY IMPORTED_IMPLIB path_to_thirdPartyLib/thirdParty.lib)
    
    target_link_libraries(myMainLib Third_Party)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用链接目录设置库的路径

    add_library(myMainLib STATIC ${BACKEND_SOURCES})
    
    set(LIB_DIR path_to_thirdPartyLib)
    
    LINK_DIRECTORIES(${LIB_DIR})
    
    target_link_libraries(myMainLib ${LIB_DIR}/thirdParty.lib)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 尝试找到图书馆

    add_library(myMainLib STATIC ${BACKEND_SOURCES})
    
    find_library(Third_Party thirdParty.lib)
    
    if(Third_Party)
      #never gets in here
      target_link_libraries(myMainLib ${Third_Party})
    endif()
    
    Run Code Online (Sandbox Code Playgroud)

c++ dll cmake static-libraries

8
推荐指数
1
解决办法
1万
查看次数

为 OSX 编写可插拔身份验证模块 (PAM)

我正在尝试获得一个基本的 PAM,以便在 OSX 上使用屏幕保护程序身份验证。代码很简单,只要对一切都返回true即可(类似于pam_permit)。我希望当用户想要从屏幕保护程序返回到他们的帐户时,无论他们输入什么密码,pam_sm_authenticate 都会返回 true。但是,这并不能正常工作,从屏幕保护程序返回仍然需要正确的用户密码。我究竟做错了什么。具体来说:

/usr/lib/pam 中的所有库都是 .so,但我用 Xcode 构建的库是 .bundle 或 .dylib。我是否需要采取任何额外的步骤来让 PAM 加载这些?(这里是 OSX 菜鸟)。

代码:

#define PAM_SM_ACCOUNT
#define PAM_SM_AUTH
#define PAM_SM_PASSWORD
#define PAM_SM_SESSION

#include <security/pam_appl.h>
#include <security/pam_modules.h>

PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) {
return(PAM_SUCCESS);
}

PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv)           {
    return(PAM_SUCCESS);
}

PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) {
    return(PAM_SUCCESS);
}

PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int …
Run Code Online (Sandbox Code Playgroud)

authentication macos pam dylib

5
推荐指数
1
解决办法
3007
查看次数

标签 统计

authentication ×1

c++ ×1

cmake ×1

dll ×1

dylib ×1

macos ×1

pam ×1

static-libraries ×1