c++ - C++ 链接到静态库
问题描述
我有一个输出动态库的 c++ 项目“A”。我希望这个库链接到我制作的静态库“B”。问题是我undefined external symbol
在编译时出错。我尝试将“B”配置为动态库并且链接工作正常,但要求是动态库链接到静态库。
我的问题是:
- 可能影响此类链接的静态库和动态库之间可能有什么不同?
- 使用静态库时,我想使用的所有符号都应该
dllexport
编辑吗?如果是,为什么链接到动态库时不需要使用
编辑
在B项目中,我有以下内容:
头文件
#define APICALL extern "C" __declspec(dllexport)
#define STACKMODE __stdcall
APICALL void STACKMODE GenerateTIERJ_PAM4(double * timeVals, double * YVals, double * smoothedYVals, double lineRate, double ratio, double*tiePts, double * timeIndexes, double *RJ_RMS, int cntData);
源文件
APICALL void STACKMODE GenerateTIERJ_PAM4(double * timeVals, double * YVals, double * smoothedYVals, double lineRate, double ratio, double*tiePts, double * timeIndexes, double *RJ_RMS, int cntData)
{
//Doing some stuff
}
在一个项目中,我直接使用这个函数
extern "C" __declspec(dllimport)void GenerateTIERJ_PAM4(double * timeVals, double * YVals, double * smoothedYVals, double lineRate, double ratio, double*tiePts, double * timeIndexes, double *RJ_RMS, int cntData);
尝试将 B 用作动态库时,它可以工作,但是当尝试将其用作静态库时,我得到以下信息
错误 LNK2019 未解析的外部符号 __imp_GenerateTIERJ_PAM4 引用 > 在函数“公共:静态双 __cdecl >Filters::ProcessScopeSamplesForTIE
解决方案
推荐阅读
- android - 替换 BottomNavigationView 中的选项卡
- mysql - laravel 中的批量插入或更新
- javascript - Typescript自动完成在VSCode中不起作用
- vb.net - 从 json 模式生成 vb 类的有效方法是什么?
- .htaccess - .htaccess Header 命令在使用转义 URL 时产生错误 500
- batch-file - 用批处理删除文本文件的行
- amazon-web-services - 具有跨账户 S3 访问的 AWS CodeDeploy 失败
- sqlite - sqflite颤动中的AND语句
- java - 我如何有条件地阻止用户导航到 Eclipse E4 RCP 应用程序中的不同视图/部分?
- html - HTML 录音权限