一. 問題
在工作中,因為一個算法功能需要跟別的部門對接,他們提供了該算法的頭文件.h,靜態庫.lib,動態庫.dll。但是頭文件中使用了C++20才有的新特性,如#include等,而本地使用的vs2015開發環境,只支持C++11標準語法,這種情況下,該怎么把該算法集成到本地項目中呢?
二.解決辦法
首先解決辦法就是對C++20用"C"語言風格進行封裝,然后再vs2015中調用。可以解決該問題。
具體步驟如下:
1. 使用vs2019,新建一個動態鏈接庫dll項目
2. 因為頭文件中使用C++20的新特性,將項目的C++語言標準改為C++20標準
3. 將該算法的頭文件.h和靜態庫.lib加載進項目中
4. 將調用的方法封裝成一個函數,這個函數就是我們最后在vs2015中調用的函數·
ShadingDegree_Api.h
#if !defined(ESHADINGDEGREE_API_H)
#define ESHADINGDEGREE_API_H#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Eigen/Dense>#ifdef __cplusplus
extern "C" {
#endif __declspec(dllexport) bool __stdcall shadingDegree_api(Eigen