找回密码
 立即注册

微信扫码登录

使用验证码登录

QQ登录

只需一步,快速开始

楼主: hxghwx

编译 最新FBN 1.003 出现报错 谁能帮忙解决下

[复制链接]

1

主题

41

回帖

294

积分

中级会员

积分
294
发表于 4 天前 | 显示全部楼层
从错误信息来看,编译过程中出现了多个 `error C3861` 错误,提示 `round` 未定义。`round` 函数在C++中通常定义在 `<cmath>` 头文件中。你需要确保在使用 `round` 函数之前包含了这个头文件。

以下是解决这个问题的步骤:

1. **包含 `<cmath>` 头文件**:
   在 `d_sys18.cpp` 文件的顶部添加以下包含指令:
   ```cpp
   #include <cmath>
   ```


2. **检查命名空间**:
   确保在使用 `round` 函数时,使用了正确的命名空间。`round` 函数位于 `std` 命名空间中,因此你需要这样调用:
   ```cpp
   std::round(your_value);
   ```


3. **检查编译器设置**:
   确保你的编译器支持C++11或更高版本,因为 `round` 函数是在C++11标准中引入的。你可以在项目设置中检查和调整编译器选项。

4. **清理和重建项目**:
   有时候,编译器缓存可能导致问题。尝试清理项目并重新编译。

以下是修改后的代码示例:

```cpp
#include <cmath> // 添加这一行

// 其他代码...

double result = std::round(your_value); // 使用 std::round
```


按照上述步骤操作后,应该可以解决 `error C3861` 错误。如果问题仍然存在,请检查是否有其他代码问题或编译器配置问题。

1

主题

18

回帖

133

积分

注册会员

积分
133
 楼主| 发表于 3 天前 | 显示全部楼层
tzmyyu 发表于 2024-12-29 19:47
从错误信息来看,编译过程中出现了多个 `error C3861` 错误,提示 `round` 未定义。`round` 函数在C++中通 ...

谢谢  我试下看

1

主题

18

回帖

133

积分

注册会员

积分
133
 楼主| 发表于 3 天前 | 显示全部楼层
tzmyyu 发表于 2024-12-29 19:47
从错误信息来看,编译过程中出现了多个 `error C3861` 错误,提示 `round` 未定义。`round` 函数在C++中通 ...

这又是什么原因呢?
微信截图_20241230151232.jpg

8

主题

200

回帖

1794

积分

金牌会员

积分
1794

最佳新人

发表于 3 天前 | 显示全部楼层
本帖最后由 xyzhz 于 2025-1-1 06:23 编辑

...............................
回复

使用道具 举报

1

主题

41

回帖

294

积分

中级会员

积分
294
发表于 3 天前 | 显示全部楼层
从你提供的编译日志来看,问题出在 `xaudio2.h` 头文件中的一条预处理指令:

```plaintext
C:\Program Files (x86)\Windows Kits\8.1\include\um\xaudio2.h(20) : fatal error C1189: #error : This version of XAudio2 is available only in Windows 8 or later. Use the XAudio2 headers and libraries from the DirectX SDK with applications that target Windows 7 and earlier versions.
```

这条错误信息表明你当前使用的 XAudio2 版本仅适用于 Windows 8 及以上版本,而你的项目目标是 Windows XP 和 Vista。因此,你需要使用适用于 Windows 7 及更早版本的 XAudio2 头文件和库。

以下是解决此问题的步骤:

### 1. 使用旧版 DirectX SDK
为了支持 Windows XP 和 Vista,你应该使用较旧版本的 DirectX SDK(例如 DirectX SDK (June 2010)),其中包含适用于这些操作系统的 XAudio2 头文件和库。

#### 下载并安装 DirectX SDK (June 2010)
- 访问 [Microsoft DirectX SDK (June 2010) 下载页面](https://www.microsoft.com/en-us/download/details.aspx?id=6812) 并下载安装包。
- 安装 DirectX SDK (June 2010)。

### 2. 配置 Visual Studio 使用 DirectX SDK
确保 Visual Studio 使用 DirectX SDK (June 2010) 中的头文件和库路径:

#### 设置包含路径
- 打开项目的属性页(右键点击项目 -> 属性)。
- 导航到 `Configuration Properties -> C/C++ -> General`。
- 在 `Additional Include Directories` 中添加 DirectX SDK 的包含路径,例如:
  ```plaintext
  C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
  ```

#### 设置库路径
- 导航到 `Configuration Properties -> Linker -> General`。
- 在 `Additional Library Directories` 中添加 DirectX SDK 的库路径,例如:
  ```plaintext
  C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86
  ```

#### 设置链接器输入
- 导航到 `Configuration Properties -> Linker -> Input`。
- 在 `Additional Dependencies` 中添加 XAudio2 库,例如:
  ```plaintext
  xaudio2.lib
  ```
  
### 3. 修改代码以兼容旧版 XAudio2
如果你的代码中使用了仅在 Windows 8 及以上版本中可用的 XAudio2 API,可能需要修改代码以确保其兼容性。参考 DirectX SDK (June 2010) 的文档,确保使用的是适用于 Windows XP 和 Vista 的 API。

### 4. 确认目标平台设置
确保你的项目配置正确地针对 Windows XP 和 Vista 进行编译。可以在项目的属性页中检查以下设置:
- `Configuration Properties -> General -> Platform Toolset`:选择适用于 Windows XP 和 Vista 的工具集(如 v110_xp 或 v120_xp)。
- `Configuration Properties -> C/C++ -> Code Generation -> Runtime Library`:选择多线程静态库(如 `/MT` 或 `/MTd`)以确保与旧版 Windows 兼容。

通过以上步骤,你应该能够解决编译错误并成功编译适用于 Windows XP 和 Vista 的项目。

1

主题

18

回帖

133

积分

注册会员

积分
133
 楼主| 发表于 前天 10:15 | 显示全部楼层
tzmyyu 发表于 2024-12-30 15:49
从你提供的编译日志来看,问题出在 `xaudio2.h` 头文件中的一条预处理指令:

```plaintext

@echo off
set MinGW = F:\MINGW
set GCC_EXEC_PREFIX = F:\MINGW
@path=F:\MINGW\bin;F:\MINGW\lib\gcc-lib\mingw32\3.3.1;%path%
@path=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86;%path%
@call "C:\Program Files\Microsoft Platform SDK\SetEnv.Cmd"
@call "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\Dx_Setenv.cmd"
@call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
@echo _
@path=F:\MINGW\perl;%path%
@path=F:\MINGW\perl\bin;%path%
@make vc UNICODE=1
@echo _
@echo FB Alpha Compilation using Visual Studio 12 (VC toolkit) Done.
@echo (Using Windows Vista Ultimate Environment)
@pause

我使用的是这个脚本 提示还是一样的  是不是有错误?

1

主题

18

回帖

133

积分

注册会员

积分
133
 楼主| 发表于 前天 10:19 | 显示全部楼层

应该不是这个原因, 我换WIN7系统,错误还是一样的。

8

主题

200

回帖

1794

积分

金牌会员

积分
1794

最佳新人

发表于 前天 10:37 | 显示全部楼层
本帖最后由 xyzhz 于 2025-1-1 06:23 编辑

..............................
回复

使用道具 举报

0

主题

11

回帖

84

积分

注册会员

积分
84
发表于 前天 11:40 | 显示全部楼层
你这编的是WINDOWS的FBN吗?看不懂,我在LINUX编SO格式的FBNEO

1

主题

41

回帖

294

积分

中级会员

积分
294
发表于 前天 11:45 | 显示全部楼层
hxghwx 发表于 2024-12-31 10:15
@echo off
set MinGW = F:\MINGW
set GCC_EXEC_PREFIX = F:\MINGW

从你提供的批处理脚本来看,有几个潜在的问题可能导致编译错误。以下是详细的分析和改进建议:

### 1. **环境变量设置问题**
- **路径格式不正确**:在 Windows 批处理脚本中,`set` 命令不应该有空格分隔等号两边的内容。
- **重复设置 `path` 变量**:多次使用 `@path=` 会覆盖之前的路径设置,而不是追加。

### 2. **编译器版本冲突**
- **MinGW 和 Visual Studio 混合使用**:你在脚本中同时设置了 MinGW 和 Visual Studio 的环境变量,这可能会导致工具链冲突。建议选择一个工具链并确保其配置正确。

### 3. **C++ 标准库支持**
- **旧版 GCC**:你使用的 MinGW 版本(GCC 3.3.1)非常老,可能不支持 C++11 或更高版本的标准库函数如 `round`。建议升级到较新的 MinGW 或直接使用 Visual Studio 编译器。

### 改进后的脚本
假设你希望使用 Visual Studio 12 (VC toolkit) 进行编译,以下是一个改进后的批处理脚本:

```batch
@echo off

:: 设置 Visual Studio 环境变量
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"

:: 添加 DirectX SDK 库路径
set PATH=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86;%PATH%

:: 添加 Perl 路径(如果需要)
set PATH=F:\MINGW\perl;F:\MINGW\perl\bin;%PATH%

:: 开始编译
make vc UNICODE=1

echo FB Alpha Compilation using Visual Studio 12 (VC toolkit) Done.
echo (Using Windows Vista Ultimate Environment)
pause
```

### 其他建议
1. **确认项目配置**:
   - 确保项目配置文件(如 Makefile)中指定了正确的编译器和选项。例如,确保启用了 C++11 标准支持。
   ```makefile
   CXXFLAGS += -std=c++11
   ```


2. **检查代码中的 `round` 函数调用**:
   - 确认所有调用 `round` 函数的地方都包含了 `<cmath>` 头文件,并且使用了 `std::round` 或者声明了 `using namespace std;`。

3. **清理和重建项目**:
   - 清理之前生成的中间文件,重新编译以避免缓存问题。
   ```bash
   make clean
   make vc UNICODE=1
   ```

通过以上改进,应该可以解决编译过程中遇到的 `round` 函数未定义的问题。如果问题仍然存在,请进一步检查项目的依赖项和配置文件。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|肖琪模拟游戏站 ( 沪ICP备2023018581号-5|沪公网安备31011702888952号 )

GMT+8, 2025-1-2 22:12 , Processed in 0.070130 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表