一. 问题
在工作中,因为一个算法功能需要跟别的部门对接,他们提供了该算法的头文件.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