C++中基于隐式链接的共享库函数导入/导出问题咨询
C++中基于隐式链接的共享库函数导入/导出问题咨询
各位大佬好!我最近在折腾C++隐式链接的共享库,在函数导入导出的宏定义这块有点拿不准,先把我目前搭的代码结构贴出来,想请大家帮忙看看思路对不对,或者给点优化建议~
CMakeLists.txt 代码如下:
cmake_minimum_required(VERSION 3.24) project(foo) set(CMAKE_CXX_STANDARD 17) add_library(foo SHARED library.cpp) target_compile_definitions(foo PRIVATE MYLIB_EXPORTS)
library.h 目前的代码片段:
#pragma once #ifdef _WIN32 #ifdef MYLIB_EXPORTS #define MYLIB_API __decl
其实我本来是想通过MYLIB_EXPORTS这个宏来做区分:编译共享库本身的时候,把MYLIB_API定义成__declspec(dllexport)导出函数;当其他程序引用这个库时,再把它定义成__declspec(dllimport)来导入函数。不过写到一半突然有点犯嘀咕,不确定这种写法有没有问题,另外也想知道如果要跨平台(比如Linux环境),这种导入导出的逻辑要怎么调整?有没有更通用的实现方式呀?
备注:内容来源于stack exchange,提问作者Alice Gingertail
相关产品推荐
相关产品推荐

