函数模板的显式实例化失败 (g++)

2024-02-17

我在函数模板的显式实例化方面遇到一些问题(即链接错误)。在Visual Studio下项目链接正常,仅在g++/Unix下,使用Eclipse-CDT,链接产生错误。

在一个大项目中,函数调用是静态库的一部分,它与动态库链接。 函数架构如下:

  • 函数模板在我的命名空间内声明(但未实现)MathUtils.h文件。函数参数之一本身就是一个结构模板,它被声明为and在此实施h文件(在同一命名空间下)。
  • 函数的实现和实例化位于MathUtils.cpp.
  • 函数调用位于someFile.cpp(当然#include "MathUtils.h")它作为静态库的一部分进行编译和链接。

让我(几乎)疯狂的是,构建错误不能完全重现,我怀疑 Eclipse 应该受到指责(也许跳过了一些步骤,尽管我使用clean project每次构建之前)。

在大约一个小时的时间里,调试配置构建没有错误,但发布失败并显示undefined reference to...链接错误。 然后,在接下来的一个小时里,两种配置都失败了。然后我做了一个小项目,只有上面提到的 3 个文件,并从命令行和 Eclipse 编译它 - 没有任何错误。现在两种配置似乎都链接正常。

有人在使用 Eclipse-CDT 时遇到过类似的问题吗?有什么建议么?

编辑:由于问题不容易(或根本)重现,我想很难得到答案。如果我有任何新的见解,我会更新。


我有类似的问题。通过移动实例化解决了这个问题after实施于.cpp与类的实现。

myclass.hpp:

template <class T>
class MyClass
{
public:
    MyClass();
    // other declarations
};

myclass.cpp:

#include "myclass.hpp"

template <class T>
MyClass<T>::MyClass()
{
}

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

函数模板的显式实例化失败 (g++) 的相关文章

随机推荐

  • 使用 Google Analytics 管理 API 和应用脚本提取 GA4 媒体资源列表

    想知道是否有人有使用新的 Analytics Admin API 将 GA 帐户和属性列表导出到电子表格的经验 我过去曾使用管理 API 来实现此目的 但这限制了我们只能使用 UA 属性 我希望也能在此处包含 GA4 属性 我尝试过将旧脚本
  • simplemembership MVC4 通过 userId 获取用户名

    使用 MVC4 和 SIMPLEMEMBERSHIP 的人知道如何通过 userId 获取用户名 用户未登录 我想删除它 要删除我必须使用 Membership DeleteUser string username 你可以使用GetUser
  • 连接来自不同服务器的表

    有什么建议如何在存储过程中连接来自不同服务器的表吗 如果没有更多细节 很难给出直接的例子 但基本思想如下 首先 在存储过程之外 主机服务器 存储过程所在的服务器 必须了解第二台服务器 包括 可能 登录信息 在您的主服务器上 运行sp add
  • TestCafe——断言元素可见的正确方法

    根据各种论坛讨论 TestCafe 文档以及尝试比较结果 我仍然不确定哪种是断言页面元素可见的正确 或最佳 方法 await t expect Selector elementId visible ok vs await t expect
  • 使用 Javascript 在 Span 标记内动态插入链接

    我有这个 span class image img src something jpg span 我想使用 javascript 将其转换为 span class image a href domain img src something
  • 如何为我的石头剪刀布游戏编写一套更简洁的代码?

    下面是我在 Web 开发课程中必须进行的石头剪刀布游戏活动的 JS 文件 我能够让一切正常工作 但是我不喜欢 if else 语句使我的代码花费了多长时间 并且想知道如何使其更加简洁并以更少的代码行数实现 const imagePath i
  • 将 div 容器调整为视频大小(也可全屏)

    我正在尝试获取覆盖视频的文本 并根据其大小调整进行相应的操作 目前我的麻烦是使视频容器的大小与播放器相同 以及全屏模式 我的容器是相对定位的 我的视频和文本叠加 div 是绝对定位的 HTML div div
  • 使用 SoX 将 mp3 文件分割为 TIME 秒

    我需要将 mp3 文件分割成片TIME每秒 我试过了mp3splt 但如果输出是 它对我不起作用不到1分钟 是否可以这样做 sox file in mp3 file out mp3 trim START LENGTH 当我不知道mp3文件时
  • 使用 spring 集成 aws 轮询 S3 存储桶中的文件并进行处理

    我需要轮询 S3 存储桶中的文件 并在任何文件可用时立即拾取并处理它们 我需要使用 Spring Integration 和 spring integration aws 来完成此操作 所以到目前为止我的代码看起来像这样 public Am
  • 将不存在的元素添加到 DynamoDB 中的数组

    我正在尝试更新项目属性 即字符串列表 仅当属性不存在时我才可以更新 追加 该属性吗 类似于 list append 和 if not exists var 参数 UpdateExpression 设置朋友 list append if no
  • 增加 ggplot 标题中下划线的大小

    我正在尝试增加 ggplot 标题中下划线的大小 宽度 厚度 我尝试过使用尺寸 宽度和长度 但没有成功 这是我所做的一个例子 test lt tibble x 1 5 y 1 z x 2 y ggplot test aes x z geom
  • Spring 3.1.1 与 hibernate 4.1 注解配置

    我正在使用 spring3 1 1 和 hibernate 4 1 设置新项目 当我运行我的项目时 出现以下错误 java lang NoSuchMethodError org hibernate SessionFactory getCur
  • 获取Redis集群中所有key

    我使用的是Redis集群版本redis 5 0 5 我想查看 Redis 集群中存在的所有密钥 我知道我们使用独立的KEYS 获得所有钥匙 如何查看Redis集群中的所有键 redis cli h hostname p 90001 c ho
  • 如何托管我自己的私有 conda 存储库?

    我有几个相互依赖的 python 项目 我为每个项目都有不同的发行版本 不同的项目可能依赖于特定项目的不同发行版本 我想在内部服务器上创建自己的 conda 存储库 在其中我可以将这些项目的版本作为 conda 包推送 其他项目可以从那里安
  • window.location.href 与单击锚点

    点击有什么区别 a href href a vs calling window location href 只要有可能 您应该使用 a href foo html over window location href 有很多很好的理由 如果您
  • 有没有办法检查缓冲区是否采用 Brotli 压缩格式?

    我是一名实习生 正在研究在软件中使用 Brotli 压缩是否可以比当前版本 使用 GZip 带来性能提升 我的任务是使用 GZip 更改任何内容以使用 Brotli 压缩 我需要替换的一个函数会检查缓冲区是否包含使用 GZip 压缩的数据
  • 在 Python 中处理非常大的数字

    我一直在考虑用 Python 进行快速扑克牌评估 我突然想到 加快该过程的一种方法是将所有牌面和花色表示为素数 并将它们相乘以表示手牌 至惠特 class PokerCard faces 23456789TJQKA suits cdhs f
  • NodeJs如何在控制台中显示结构化表格

    不安装新包可以吗 Here i am using cli table package 有什么简单的方法可以做到吗 您可以使用控制台 表 https developer mozilla org en US docs Web API Conso
  • 如何在 create-react-app 中更新 Jest 测试框架?

    我已经创建了一个应用程序create react app https github com facebookincubator create react app包裹 我发现 Jest 版本 15 1 1 存在错误 但我意识到在版本 16 中
  • 函数模板的显式实例化失败 (g++)

    我在函数模板的显式实例化方面遇到一些问题 即链接错误 在Visual Studio下项目链接正常 仅在g Unix下 使用Eclipse CDT 链接产生错误 在一个大项目中 函数调用是静态库的一部分 它与动态库链接 函数架构如下 函数模板