- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个程序来监听使用 JACK audio server 创建的音频流.该包在单独使用时工作正常,但是当我尝试在文件中使用它以及对标准 c++ 库(如 iostream)的引用时,在第 3 方库和 stdint.h 之间抛出 typedef 冲突错误。
对于文件,我使用的是 jack/jack.h
和 jack/types.h
,它们都来自 JACK 包。它们包括对 systemdeps.h
文件(在下面展开)的引用,这是错误的来源。
我试图在网上寻找解决方案,但似乎没有任何效果。对于可能导致此问题的任何见解,或指出解决问题的正确方向,我们将不胜感激。
2>\Jack\includes\jack/systemdeps.h(69): error C2371: 'int8_t': redefinition; different basic types (compiling source file src\jack\jack_interface.cpp)
2>stdint.h(17): note: see declaration of 'int8_t' (compiling source file src\jack\jack_interface.cpp)
2>\Jack\includes\jack/systemdeps.h(73): error C2371: 'int32_t': redefinition; different basic types (compiling source file src\jack\jack_interface.cpp)
2>stdint.h(19): note: see declaration of 'int32_t' (compiling source file src\jack\jack_interface.cpp)
2>\Jack\includes\jack/systemdeps.h(74): error C2371: 'uint32_t': redefinition; different basic types (compiling source file src\jack\jack_interface.cpp)
2>stdint.h(23): note: see declaration of 'uint32_t' (compiling source file src\jack\jack_interface.cpp)
// jack_interface.cpp
#include <iostream>
#include "jack/jack.h" // Core library .h
#include "jack/types.h" // library types .h
#include "jack/jack_interface.h" // My .h extending the lib
namespace jack
{
}
这是我能写的导致抛出错误的最低限度。
jack_interface.h 是空的。
jack.h 和 types.h 都包含对 systemdeps.h 的引用,冲突就是在这里产生的。
错误仅在库和引用 stdint.h 的任何标准 C++ 文件都包含时抛出,例如iostream。如果我删除 iostream,库功能 100%。
我使用的第 3 方包中的库适用于 32 位 Windows。我正在使用 Visual Studio 2017 为 32 位编译。
引发冲突的库头文件。抛出错误的行已在下面标记。 See file on github here.
#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(GNU_WIN32)
#include <windows.h>
#ifdef _MSC_VER /* Microsoft compiler */
#define __inline__ inline
#if (!defined(int8_t) && !defined(_STDINT_H))
#define __int8_t_defined
typedef char int8_t; <-- ERROR
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef long int32_t; <-- ERROR
typedef unsigned long uint32_t; <-- ERROR
typedef LONGLONG int64_t;
typedef ULONGLONG uint64_t;
#endif
最佳答案
那个”systemdeps.h”
在提供这些 typedef 方面做得相当糟糕。根据您的评论,它正在检查错误的 include guard。即使它是正确的,如果包含 <stdint.h>
也会遇到问题在那个标题之后。所以你必须做两件事。首先,无论你在哪里使用这些 jack
标题,添加 #include <stdint.h>
之前您包括 jack
标题。其次,紧接在 #include <stdint.h>
之后添加 #define _STDINT_H
.这样你就可以从编译器的头文件中获取 typedef 并告诉 ”systemdeps.h”
不提供自己的定义。这既乏味又容易出错,因此您可以考虑创建自己的 header ,在一个地方完成所有这些工作。
关于C++ 第三方库 typedef 与标准 stdin.h 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51181008/
我有 asp.net mvc 2 应用程序。 现在我正在重新实现它以使用 Ninject .除了一件事,一切都很好:我应该在哪里存储 Ninject.dll ?? 我创建了 lib我的 appdir
我有一个使用第三方 FTP 库的类 http://ftps.codeplex.com/我想模拟它,这样我就可以只测试那个类而不是 FTP 库。我已经做到了,但对我来说感觉很乱。详细地说,该类使用 Al
我正在尝试关注 Ilya Grigoric's performance best practices通过内联关键的 css 和 js 并在以后异步加载所有其余部分。 我的问题是当我的页面需要第 3 方
我正在开发聊天应用程序。我有像 Skype 这样的聊天同步选项。假设我登录了设备 A,并且已经通过该设备进行了聊天。现在,当我当时登录设备 B 时,所有聊天记录都会同步到设备 B。 XMPP 问题 我
我在 VS2010 上有两个项目的解决方案。 主工程引用并依赖第二个,构建为静态库。第二个使用未在解决方案中构建的静态第三方库,但仅在第二个项目的链接器设置中引用。 如果我尝试生成解决方案,VS失败,
我想跟踪从另一个第 3 方库发出的对某些第 3 方库的调用。 示例:我想跟踪对库 A 的调用。我的应用程序静态链接库 B,而库 B 又静态链接到库 A。所以基本上我拥有的是 libAB.a 在动态链接
代码显示使用 -cp 触发器编译但未运行。显然,它找不到 HashMultimap。类路径问题? $ javac -cp google-collect-1.0.jar MultiThing.java
我所拥有的:我的代码(简单的 main.cpp)、第 3 方库的 header (EnvVar TPLIB_INCLUDE)、二进制库(TPLIB_BINARY_PATH 中的几个 .a 文件)和以下
我是 ionic 的新手,需要一些帮助: 我已经通过 here 中的教程实现了 chart.js 之类的东西,我真的很喜欢这个结果。 但我尝试用来自 processing 的 p5.js 做同样的事情
是否可以在 MonoTouch 中使用用 C# 编写的第 3 方库?例如,如果我需要进行图像处理并需要使用图像处理库... 或者重新表述问题:有人可以向我解释一下用 Objective-C 或 C#
我目前正在努力将一组 C++ 二进制文件升级为基于 Autotools 的更现代的东西,每个文件都使用自己的 Makefile 集。但是我不知道如何将第三方库(例如 Oracle Instant Cl
在过去的几个月里,我的学习速度一直很慢,并且很好奇 C++ 标准是否使用第 3 方库。我问这个的原因是因为 C++20 说可能的库更改将包括我被告知在 Boost ASIO 之后需要的网络。 Boos
我正在尝试开始使用 angular 2 cli。 我想在我的项目中使用 momentjs,所以这是我所做的: 1. 使用angular cli创建项目。 2. 运行 npm install --sav
我的配置如下: OCaml 由 Homebrew 根据其默认配方安装。它住在 /usr/local/Cellar/objective-caml/3.12.0/[bin,lib,share] ,其内容被
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: Managing 3rd party sources and binaries used by code under
所以我在项目中使用专有的 java 库,我无法访问源代码。 它抛出一个Message对象,显然我不能实现Serializable。它在整个运行时生成。 我有哪些选择?有没有办法将 Message 对象
我正在尝试使用以下方法将 Google Plus 身份验证引入 CodeIgniter: https://code.google.com/p/google-api-php-client/ 我已经把这些
我的配置中有以下内容: const viewerConfigProdWeb = merge(common.commonWebConfig, { output: { path: outputPa
在生产项目中使用 3rd 方库/组件时,您是否严格要求仅使用所述库的已发布版本? 您什么时候考虑使用库的预发布或测试版(在开发中?在生产中,在某些情况下)? 如果您遇到库的错误或缺点并且您已经 pro
我正在尝试将 qpOASES c++ 库包含在我在 RStudio 中构建的 Rcpp 项目中。 我浏览了编写 R 包和各种 Rcpp 小插图。我找到了这个 post其中引用 this存档对话。按照我
我是一名优秀的程序员,十分优秀!