トップページ > 記事閲覧
x64ビルドするとCPU名、速度が取得できない
名前:Ketty 日時: 2015/04/20 12:49

管理人様 いつも楽しくDXライブラリを使用させていただいております(^^) ■GetPcInfo関数において、x64ビルドすると、 パラメータ戻り値の 第2引数:CPUString および、 第3引数:CPUSpeed がいずれも空になります。 (Win32ビルドだといずれも値が返ります。) ■再現ソース // http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2637 からの流用です #include <DxLib.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ログ出力しません DxLib::SetOutApplicationLogValidFlag( FALSE ) ; // ウィンドウモードにします ChangeWindowMode( TRUE ) ; // DXライブラリ初期処理 if( DxLib_Init() == -1 ){ return -1 ; } // PC情報を取得します char s[5][256] ; int i ; double f[4] ; GetPcInfo( s[0], s[1], s[2], &i, f, f+1, s[3], s[4], f+2, f+3 ) ; // 白色 const int white = GetColor( 255, 255, 255 ) ; // 描画先を裏画面に設定 SetDrawScreen( DX_SCREEN_BACK ); // ESCキーで終了 while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen() ; DrawFormatString( 0, 20, white, "OSString=%s", s[0] ); DrawFormatString( 0, 40, white, "DirextXString=%s", s[1] ); DrawFormatString( 0, 60, white, "CPUString=%s", s[2] ); DrawFormatString( 0, 80, white, "CPUSpeed=%d", i ); DrawFormatString( 0, 100, white, "FreeMemorySize=%f", f[0] ); DrawFormatString( 0, 120, white, "TotalMemorySize=%f", f[1] ); DrawFormatString( 0, 140, white, "VideoDriverFileName=%s", s[3] ); DrawFormatString( 0, 160, white, "VideoDriverString=%s", s[4] ); DrawFormatString( 0, 180, white, "FreeVideoMemorySize=%f", f[2] ); DrawFormatString( 0, 200, white, "TotalVideoMemorySize=%f", f[3] ); ScreenFlip() ; } // DXライブラリ終了処理 DxLib_End() ; // ソフトの終了 return 0 ; } ■環境  OS:Windows7 Home Edition 64bit  開発環境:Visual Studio Express 2012 for Windows Desktop  DXライブラリのバージョン:3.13e(※↓こちらであげてくださっているテスト版です)  http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=3535
メンテ

Page: 1 |

Re: x64ビルドするとCPU名、速度が取得できない ( No.1 )
名前:管理人 日時:2015/04/21 12:48

CPU名や速度はアセンブリ言語の命令をインラインアセンブラで直接使用して 取得していたので、インラインアセンブラが使用できない x64 環境では取得ないのです・・・ と思っていたのですが、少し調べてみたら使用する必要がある cpuid 命令と rdtsc 命令をC言語から使用するための関数が用意されていました というわけで、x64 環境でも CPUString と CPUSpeed の値が返るように してみましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: x64ビルドするとCPU名、速度が取得できない ( No.2 )
名前:Ketty(解決) 日時:2015/04/21 10:06

管理人様 迅速なご対応感謝します(^^) VisualC++ 用で正しく取得できることを確認できましたので 解決をさせていただきます。 不具合かとおもい報告させていただきましたが、 そうではなくてむしろ機能拡張にあたるものだったのですね。 わざわざご対応くださりありがとうございましたm(__)m
メンテ

Page: 1 |

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

   クッキー保存