我正在尝试为3ds max编写插件,我按照帮助文件中的说明完成了整个sdk安装过程。
我面临的问题是整理抱怨宏定义无效
“IntelliSense:命令行错误:宏定义无效:_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT = 1”
我在项目settigs中找到了定义 - > c / c ++ - >预处理器定义从父项或项目默认继承。
我尝试禁用继承的定义并重新输入它们,这次没有名称和=之间的空格而且一切正常,所以我猜他们的错字了吗?
无论如何,我想更改默认项目或者每次开始新项目时不重复它。该项目是使用向导创建的,该向导要求我复制一些文件以显示,然后我必须输入sdk路径。
我复制的文件是带有一些花哨的扩展名的纯文本,而不是很多,所以我猜测默认值是在sdk目录中描述的。某处。有谁知道我在找什么样的文件?
编辑:我发现了一个名为root.vcxproj_template的文件,它有一个预处理器定义部分,但它包含的是<PreprocessorDefinitions>_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
并没有提到破碎的那个
EDIT2:在文件的另一部分中有一个属性表的路径(maxsdk \ ProjectSettings \ propertySheets \ 3dsmax.common.tools.settings),其中包含错误的定义。我不再向VS提出任何投诉。
答案 0 :(得分:0)
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT = 1表示编译器应使用新版本替换所有旧的C运行时例程,例如 sprintf , strcpy , strtok 如 strprintf_s , strcpy_s , strtok_s 等。它与以下定义配对_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES = 1.
你可以在这里找到更多:(MSDN)https://msdn.microsoft.com/en-us/library/ms175759.aspx。但是我尝试使用它但没有成功。它说你只能将它用于静态分配的缓冲区,比如 char buffer [32] ,但编译器仍抱怨不安全的 strcpy 。