トップページ > 記事閲覧
ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな
名前:スクナ 日時: 2024/09/01 11:55

初学者です。 Dxlibを使っているプロジェクト内で SinやRoundなどの数学関数を使いたくて、 #include "Dxlib.h" #include <math.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 〜省略〜 double i = なんらかの少数; int tmp = round(i * 0.5); 〜省略〜 } というように使おうとしたところ、 「ソースが見つかりません」というタブに ・_round.hを手動で見つける ・逆アセンブリの表示 ・詳細情報 が表示されました。 インクルードが変なのか調べるために、まったく新しいコンソールプロジェクトを作成し、Dxlibを使わずに #include <iostream> #include <math.h> int main() { int tmp = round(0.5); std::cout << tmp; } というコードを動かしたところ、問題なく実行されました。 何が原因か比較していた時に、Dxlibを使う際に最初に設定する 「ソリューションエクスプローラー」→「プロパティ」→「C/C++」→「コード生成」→「ランタイムライブラリ」について、 Dxlibを使っているプロジェクトをそれぞれ「/MD」、「/MDd」にしたところ、使えるようになりました。 これは結局何が原因なのでしょうか? また、「/MT」、「/MTd」で<math.h>を使うためにはどうしたらいいでしょうか?
メンテ

Page: 1 |

Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.1 )
名前:管理人 日時:2024/09/02 01:54

手元の Visual Studio 2022 の環境で #include "DxLib.h" #include <math.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) { return -1 ; } double i = 1.8; int tmp = round(i * 0.5); DxLib_End() ; return 0 ; } ↑ こちらのようなDXライブラリを使用しつつ round を使用するプログラムを 組んでみたのですが、特に問題なくビルドでき、プログラムも実行することができました ( 「ランタイムライブラリ」の設定も /MT /MTb のままです ) スクナさんの環境では上記のプログラムでもコンパイルエラーが発生してしまうのでしょうか?
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つから ( No.2 )
名前:スクナ 日時:2024/09/02 18:25

管理人さんのコードにしても同じエラーが出ました。
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.3 )
名前:管理人 日時:2024/09/02 22:16

お試し頂きありがとうございます DXライブラリのパッケージの中に『サンプルプログラム実行用フォルダ』というフォルダがあり、 そのフォルダの中にある VisualStudio_2022用.sln というファイルを Visual Studio 2022 で読み込むと DXライブラリのプログラムを実行するための設定が全て済んでいるプロジェクトを開いた状態となります プロジェクトに含まれている test.cpp がコンパイル・実行されるようになっていますので お手数で申し訳ありませんが、test.cpp の内容を全部削除して、投稿No.1 の私の投稿のプログラムを 貼り付けて実行してみても同様のエラーが発生するかお試し頂けないでしょうか? m(_ _;m
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.4 )
名前:スクナ 日時:2024/09/03 19:29

サンプルプログラム実行用フォルダのものを使っても同じエラーが出ました。 Dxlibを使っていないコンソールプロジェクトの下記コード #include <iostream> #include <math.h> int main() { int tmp = round(0.5); std::cout << tmp; } を/MT /MTbにしても同じエラーが出るので 私のVisualStudio2022側が全体的におかしいのかと考えています。 Visualstudio2022を再インストールした方がいいでしょうか?
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.5 )
名前:管理人 日時:2024/09/04 00:53

お試し頂きありがとうございます 確かに Visual Studio 2022 が少し変かもしれませんね… Visual Studio Installer を起動して Visual Studio 2022 を『変更』をすると、インストール時のように インストールするコンポーネントを選択することができるのですが、私の場合は 『デスクトップとモバイル』の欄にある全5項目と 『ゲーム』の欄にある『C++によるゲーム開発』にチェックが付いていました よろしければ再インストールをされる前に上記の6項目にチェックを入れてインストールをした上で 改めてコンパイルを試してみてください m(_ _)m
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.6 )
名前:スクナ 日時:2024/09/04 23:20

『デスクトップとモバイル』の欄にある全5項目と 『ゲーム』の欄にある『C++によるゲーム開発』を追加インストールしても Visualstudio 2022を再インストールしても症状が変わりませんでした。
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.7 )
名前:管理人 日時:2024/09/05 01:22

駄目でしたか… Visual Studio Installer の『変更』を押した際に、初期状態では『ワークロード』タブが選択されていますが 『個別のコンポーネント』タブを選択することでより細かいインストール項目の選択ができるようになっています 私の環境では以下の項目にチェックがついていましたので、もしスクナさんの環境で下記の項目で チェックが付いていないものがありましたらチェックを付けてインストールした上で、再度コンパイルを試してみてください m(_ _;m .NET .NET 6.0 ランタイム(長期サポート) .NET 7.0 ランタイム(サポート対象外) .NET 8.0 ランタイム(長期サポート) .NET Framework 4.7.2 Targeting Pack .NET Framework 4.8 SDK .NET Framework 4.8 Targeting Pack .NET MAUI SDK for Windows .NET SDK .NET SDK for Android .NET SDK for iOS .NET SDK for Mac Catalyst .NET ネイティブ ML.NET Model Builder AI アシスタンス GitHub Copilot SDK、ライブラリ、およびフレームワーク Android SDK のセットアップ Entity Framework 6 Tools OpenJDK (Microsoft ディストリビューション) TypeScript サーバー v143 ビルド ツール用 C++ v14.34 (17.4) MFC (x86 および x64) v143 ビルド用 C++ v14.34 (17.4) ATL (x86 および x64) Windows 10 SDK (10.0.19041.0) Windows 11 SDK (10.0.22621.0) Windows ユニバーサル CRT 最新の v143 ビルド ツール用 C++ ATL (x86 および x64) クラウド、データベース、およびサーバー SQL Server の CLR データ型 ゲーム開発スイート DirectX 用グラフィックス デバッガーおよび GPU プロファイラー 画像と 3D モデルのエディター コード ツール ClickOnce Publishing Developer Analytics Tools NuGet のターゲットおよびビルド タスク NuGet パッケージ マネージャー テキスト テンプレート変換 コンパイラ、ビルド ツール、およびランタイム C# および Visual Basic Roslyn コンパイラ C++ 2022 再頒布可能パッケージの更新プログラム MSBuild MSVC v143 - VS 2022 C++ ARM ビルド ツール (最新) MSVC v143 - VS 2022 C++ ARM64/ARM64EC ビルド ツール (最新) MSVC v143 - VS 2022 C++ x64/x86 ビルド ツール (最新) V143 ビルド ツールの C++ ユニバーサル Windows プラットフォームサポート (ARM64/ARM64EC) Windows 用 C++ CMake ツール デバッグとテスト .NET プロファイル ツール Boost.Test のテスト アダプター C++ AddressSanitizer C++ のプロファイル ツール JavaScript 診断 Just-In-Time デバッガー Test Adapter for Google Test 未カテゴリ化 Live Share 2022 開発作業 C# および Visual Basic C++ Android 開発ツール C++ コア機能 F# 言語サポート IntelliCode JavaScript および TypeScript の言語サポート Xamarin (サポート対象外) リモート iOS シミュレーター 拡張機能 ML.NET Model Builder 2022 Single-project MSIX Packaging Tools for VS 2022
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.8 )
名前:スクナ 日時:2024/09/05 09:57

上記個別コンポーネントをインストールしても変わりませんでした。 以下、詳細情報にあるエラーを記載します。 アクティブなソリューションのデバッグ ソース ファイルの設定では、デバッガーがファイル minkernel\crts\ucrt\src\appcrt\tran\_round.h の検索をユーザーに要求しないことが示されています。 ソース ファイル 'minkernel\crts\ucrt\src\appcrt\tran\_round.h' が見つかりませんでした。
メンテ
Re: ランタイムライブラリをマルチスレッドDLLにしないと「_round.hが見つかりません」など、数学関数が見つからず使えな ( No.9 )
名前:管理人 日時:2024/09/06 00:00

駄目でしたか… お試し頂きありがとうございます > アクティブなソリューションのデバッグ ソース ファイルの設定では、デバッガーがファイル minkernel\crts\ucrt\src\appcrt\tran\_round.h の検索をユーザーに要求しないことが示されています。 > ソース ファイル 'minkernel\crts\ucrt\src\appcrt\tran\_round.h' が見つかりませんでした。 _round.h というファイルは私のPCにも存在しないようです ビルド時に画面下部に表示される『出力』タブを選択して、『出力元』を『ビルド』にした際の出力はどのようになっていますでしょうか? 例えば『サンプルプログラム実行用フォルダ』の VisualStudio_2022用.sln を開いてビルドした際は以下のような出力となります 23:52 でビルドが開始されました... 1>------ ビルド開始: プロジェクト: VisualStudio_2022用, 構成: Debug x64 ------ 1>test.cpp 1>VisualStudio_2022用.vcxproj -> M:\DxLib\Release\Library\Package\DxLib_VC\サンプルプログラム実行用フォルダ\x64\Debug\VisualStudio_2022用.exe ========== ビルド: 成功 1、失敗 0、最新の状態 0、スキップ 0 ========== =========== ビルド は 23:52 で完了し、01.004 秒 掛かりました ========== 文法エラーがあった場合( double を duble と誤記述した場合 )は以下のような出力になります 23:55 でビルドが開始されました... 1>------ ビルド開始: プロジェクト: VisualStudio_2022用, 構成: Debug x64 ------ 1>test.cpp 1>M:\DxLib\Release\Library\Package\DxLib_VC\サンプルプログラム実行用フォルダ\test.cpp(14,2): error C2065: 'duble': 定義されていない識別子です。 1>M:\DxLib\Release\Library\Package\DxLib_VC\サンプルプログラム実行用フォルダ\test.cpp(14,8): error C2146: 構文エラー: ';' が、識別子 'i' の前に必要です。 1>M:\DxLib\Release\Library\Package\DxLib_VC\サンプルプログラム実行用フォルダ\test.cpp(14,8): error C2065: 'i': 定義されていない識別子です。 1>M:\DxLib\Release\Library\Package\DxLib_VC\サンプルプログラム実行用フォルダ\test.cpp(16,21): error C2065: 'i': 定義されていない識別子です。 1>プロジェクト "VisualStudio_2022用.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 成功 0、失敗 1、最新の状態 0、スキップ 0 ========== =========== ビルド は 23:55 で完了し、00.998 秒 掛かりました ========== よろしければ『'_round.h' が見つかりませんでした。』と出力されたビルド時の出力の全文をこちらに貼り付けて頂けないでしょうか? m(_ _;m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存