我一直在 Visual Studio 2022 中实现一个使用外部 C++ 库的项目。
我已经在
project properties > C/C++ > General > Additional Include Directories > ...armadillo library location.
中添加了犰狳库
我还有其他附加库,例如 eigen 库。
我已经设置了
C/C++ > Precompiled Headers > Precompiled Heaader : Not using Precompiled Headers
。
然后我也尝试实施为:Use/Yu or Create/Yc
。
这是我的代码:
#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier
#include <utility>
#include <iostream>
#include <limits.h>
#include "TxLibrary.h"
// Added C library for the implementation
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Added C++ libarary for the implementation
#include <vector>
#include <algorithm>
#include <iomanip>
#include <armadillo>
#include <fstream>
#include <string.h>
void foo(int x, int y){
int temp = min(x,y);
}
int main(){
foo(2,3);
}
构建期间出现完整错误,包括犰狳库:
Severity Code Description Project File Line Suppression State Error C3861 'min': identifier not found.
删除后警告
#include <armadillo>
:
1>WARNING: undefined conflicting 'min' and/or 'max' macros.
这是因为犰狳库包含 min 函数吗? 或者我是否为 Visual Studio 选择了错误的设置来包含目录?
使用 std::min 而不是 min。避免
using namespace std
;
由于宏 NOMINMAX 有效,您的其他头文件可能会间接包含
minwindef.h
。
并添加
( )
,(std::min)(x,y)
应该适合您,无需添加预处理器:NOMINMAX