strncasecmp 和 strcasecmp 尚未声明

2023-11-21

我尝试在 Code::Blocks 中使用 MinGW 编译 Assimp,但出现以下错误。

\assimp-3.3.1\assimp-3.3.1\code\StringComparison.h||In function 'int Assimp::ASSIMP_stricmp(const char*, const char*)':|
\assimp-3.3.1\assimp-3.3.1\code\StringComparison.h|144|error: '::strcasecmp' has not been declared|
\assimp-3.3.1\assimp-3.3.1\code\StringComparison.h||In function 'int Assimp::ASSIMP_strincmp(const char*, const char*, unsigned int)':|
\assimp-3.3.1\assimp-3.3.1\code\StringComparison.h|193|error: '::strncasecmp' has not been declared|

在搜索时,我发现有问题的两个函数(strcasecmp 和 strncasecmp)实际上是在string.h它包含在标题中StringComparison.h。我也设法得到strings.h,它们最初所属的文件,但包括该文件也没有解决问题。

在搜索这个网站时,我发现我并不是唯一一个遇到这个问题的人。我发现的另一个解决方案建议使用定义语句,因为这些函数的名称可能略有不同,但这也没有帮助。


我刚刚遇到了这个完全相同的问题,这个问题是在谷歌搜索解决方案时出现的,所以我将在这里记录我的狡猾的解决方案:

最后,我通过对 Assimp 源代码进行多次小修改就成功了。解决字符串问题不足以使其正常工作,因为它在构建的后期会失败。我将在下面列出我所做的编辑。我建议一次制作一个,然后重建,以防万一您的设置出于某种原因不需要其中一些。请注意,由于最后一次编辑(对 Exporter.cpp),您无法使用此解决方案进行模型导出,如果您确实需要,则必须找出另一种方法来修复链接错误。

这不是一个干净的解决方案,它可能会被 Assimp 的未来版本取代,届时我将删除它。这是针对 assimp-3.3.1,使用 MinGW 构建的:

在 StringComparison.h 中,编辑ASSIMP_stricmp函数,注释掉除else#ifdef 子句:

/*#if (defined _MSC_VER)

    return ::_stricmp(s1,s2);
#elif defined( __GNUC__ )

    return ::strcasecmp(s1,s2);
#else*/
    char c1, c2;
    do  {
        c1 = tolower(*s1++);
        c2 = tolower(*s2++);
    }
    while ( c1 && (c1 == c2) );
    return c1 - c2;
//#endif

做类似的事情ASSIMP_strincmp.

接下来,它会抛出一个错误::_fullpath in DefaultIOSystem.cpp。我对此的“修复”只是使用注释掉此函数中除后备选项之外的所有内容:

    ai_assert(in && _out);
//    char* ret;
//#if defined( _MSC_VER ) || defined( __MINGW32__ )
//    ret = ::_fullpath( _out, in, PATHLIMIT );
//#else
    // use realpath
//    ret = realpath(in, _out);
//#endif
//    if(!ret) {
        // preserve the input path, maybe someone else is able to fix
        // the path before it is accessed (e.g. our file system filter)
//        DefaultLogger::get()->warn("Invalid path: "+std::string(in));
        strcpy(_out,in);
//    }

它还抱怨 snprintf 未定义。编辑StringUtils.h更改以下 #define 以在 snprintf 之前添加下划线:

#   define ai_snprintf _snprintf

还有一个关于 ::atof 未定义的错误。您可以通过添加来修复此问题

#include <cstdlib>

到 StringUtils.h

这应该可以构建它,但是会出现链接错误Exporter.cpp(这可能是由于我的特定 CMake 设置造成的,因为我禁用了几乎所有模型格式)。我通过注释掉定义来修复它gExporters并将其替换为:

Exporter::ExportFormatEntry* gExporters = 0;

此后它构建并运行良好。库文件放置在code文件夹。将 libassimp.dll.a 放在 lib 构建路径中,将 libassimp.dll 放在可执行文件的路径中。

当然,您也可以通过使用 VisualStudio 来实现它(我没有这样做,因为我懒得安装它)或在 Linux 上构建(我之前这样做过,并且第一次构建得很好,但我需要这样做Windows 端口)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

strncasecmp 和 strcasecmp 尚未声明 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 响应 JSON 对象还是 JSON.stringify?

    假设我想返回JSON内容 var content a foo b bar 返回 JSON 数据的最佳实践是什么 A 按原样返回对象 IEres end content B JSON stringify content 然后打电话JSON p
  • 将 JavaScript 'this' 转换为 jQuery '$(this)'

    请看一下下面的代码 div ul li li ul div
  • 如何直接将数组中的所有字符串大写?

    我学得很快 我一直在游乐场尝试这个 我不知道为什么这里的字符串没有大写 或者有没有其他方法可以直接将数组内的字符串大写 这是我的代码 var dogNames Sean fido Sarah Parker Walt abby Yang fo
  • 更好地解决多线程之谜?

    任务如下 我需要根据文件名锁定 最多可以有一百万个不同的文件名 这用于大规模基于磁盘的缓存 我想要低内存使用率和低查找时间 这意味着我需要一个 GC 锁定字典 字典中只能存在正在使用的锁 回调操作可能需要几分钟才能完成 因此全局锁定是不可接
  • 使用 jQuery 或纯 Javascript 访问 HTML 输入文本框数组

    我正在创建一个包含动态数量的输入文本框的表单 我希望每个文本框形成数组的一部分 理论上 这将使我更容易循环遍历它们 特别是因为我不知道最终存在的文本字段的数量 HTML 代码类似于 p Field 1 p
  • 具有自定义存储过程的 EF 6 代码优先

    我正在使用代码优先方法创建一个 MVC 5 应用程序 但我还在 SQL Server 数据库上创建了一些存储过程 有没有办法在创建数据库时在 C 中生成这些存储过程 也许通过执行sql 脚本 如果是这样我应该在哪里执行此操作 我会使用代码迁
  • 如何配置slurm通知邮件的内容?

    当某些类型的事件发生时 Slurm 可以使用以下选项通过电子邮件通知用户 mail type and mail user 我以这种方式收到的电子邮件包含一个空正文和一个如下所示的标题 SLURM Job id 9228 名称 toto 已结
  • 从 CSV 文件构建列表列表

    我有一个 Excel 文件 我将其导出为 csv 我想要解析该文件 但我在找到最佳方法时遇到了困难 csv 是我的网络中的计算机列表 以及每台计算机的本地管理员组中的帐户 我对元组做了类似的事情 但每台计算机的帐户数量范围从 1 到 30
  • 尝试将带有图像的表单发送到 PHP 服务器时 Android 中的内存泄漏

    我在这个文件中存在内存泄漏 我找不到确切的位置 但我认为是周围的图像 gt Bitmap bm BitmapFactory decodeFile filename 我尝试了很多不同的方法 但无法使其发挥作用 package prod veg
  • Python 多处理模块,Windows,通过创建新进程生成新的控制台窗口

    我对此做了一些研究 发现了一些类似的问题 但没有一个回答我真正想要的问题 我了解如何创建和使用流程multiprocessing模块 但是 当我创建一个新进程时 我想生成一个新的控制台窗口 仅用于该进程的使用 打印等 以便子进程不会共享父进
  • 在 WiX 中收获多个目录

    我正在尝试构建一个包含许多功能的安装程序 并且我正在使用heat收集每个功能的文件目录 我的源目录结构如下所示 HarvestDir FeatureA FeatureImpl dll FeatureImpl2 dll FeatureB Fe
  • 如何在 Swift 中实现 NSDocument 方法 -canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo: ?

    在我的应用程序中 NSDocument子类关键任务硬件 用户真的不想意外关闭文档 所以 我已经实现了canCloseDocumentWithDelegate 显示一个NSAlert并在关门前询问 我现在正在尝试在用 Swift 编写的应用程
  • 在执行 Replace with jQuery 时可以忽略字符串中的 HTML 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 替换字符串中的单词 但忽略 HTML 调用 Replace 时是否可以忽略 HTML 元素 示例代码 myText replace new RegExp searchString gi span cl
  • 字符数组是否需要调用delete[]与delete?

    我正在利用一位同事编写的库并发现valgrind正在吐出与以下相关的错误delete 问题是存在 char 数组的分配 例如 char s new char n 后来跟进delete s 代替delete s 他告诉我差别真的在于delet
  • SDL Tridion UI 2012 上的持续更新预览警报

    我正在尝试在某些测试 默认 页面上建立新的 SDL Tridion UI 2012 功能 尽管我多次单击 更新预览 但我不断检索 此页面的预览不是最新的 警报 我使用的是虚拟图像 因此除了我自己之外 其他任何人都无法编辑页面 不管哪个组件发
  • PHP 文本差异脚本

    您知道查找文本 diff 的好方法 脚本吗 您可以尝试使用PEAR Text Diff它提供基于文本的差异引擎并呈现多种差异输出格式
  • 如何检查UpdatePanel是否正在回发?

    有没有办法确定是否
  • 获取当前GCC异常模型

    g 是使用以下任一构建的DWARF2 sjlj or seh异常模型 MinGW 构建提供各种构建g 具有不同的异常模型 我希望能够确定gcc工具链正在使用什么异常模型 有没有g 将转储编译器默认异常模型的参数 Edit 最初 我正在测试中
  • 在 UIPageViewController 中禁用/启用滚动

    I got a viewController它继承自UIPageViewController interface PageScrollViewController UIPageViewController 现在我想知道如何启用和禁用滚动UI
  • strncasecmp 和 strcasecmp 尚未声明

    我尝试在 Code Blocks 中使用 MinGW 编译 Assimp 但出现以下错误 assimp 3 3 1 assimp 3 3 1 code StringComparison h In function int Assimp AS