gmpxx.hでC4146エラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sudnonk
記事: 2
登録日時: 8年前

gmpxx.hでC4146エラー

#1

投稿記事 by sudnonk » 8年前

初投稿です。
C++で任意精度演算をしようと思い、以下の手順でVisualStudio2015で扱ってみました。Windows10です。
1.MPIR(2.7.2)をダウンロードし、build.vc14のmpir.slnを開いてdll_mpir_gcをビルド
2.VS2015のプロジェクトのプロパティからV/C++ディレクトリのインクルードディレクトリにgmp.hやgmpxx.h、mpir.dllなどがあるフォルダパスを追加
3.C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\binにvsyasm.exeを追加、\libにmpir.libとmpir.pdbをコピー
4.プロジェクトのプロパティ、リンカーの入力の追加の依存ファイルにmpir.libを追加

そして以下のコードを書き、ビルドしてみました。

コード:

#include "stdafx.h"
#include <iostream>
#include "gmpxx.h"
//#include "mpirxx.h"も試しましたが同様

int main() {
	mpz_class a = 0 ,b = 1;
	a = a + b;
	std::string c = a.get_str();
	std::cout << c;

	return 0;
}
すると、C4146 符号付きの値を代入する変数は、符号付き型にキャストしなければなりません。 のエラーが起きました。また、警告としてC4800 'int': ブール値を 'true' または 'false' に強制的に設定します (警告の処理)と言われました。両方gmpxx.h(mpirxx.h)でのエラーのようです。
検索してみる限りgmpの導入段階でのミスのようなのですが、調べた限りでは上記の4手順ですべてのような気がします。(gcならyasmはいらないような気もします。)
C++自体初心者なのでなにか致命的なミスをしているかもしれません…。何を間違っているのでしょうか?
gccを使うべきとはわかっていますが、このままできないのも気持ち悪いのでなんとか解決したいです。
よろしくお願いします。

アバター
いわん
記事: 30
登録日時: 8年前

Re: gmpxx.hでC4146エラー

#2

投稿記事 by いわん » 8年前

発生しているエラーが警告だけのようなので、使用しているライブラリ・ヘッダーが間違いなく VisualStudio2015 用のものであるなら問題ないのではないでしょうか。
コンパイラオプションで「警告をエラーとして扱う」をいいえ(/WX-)にしないとビルドに失敗しますけど。

sudnonk
記事: 2
登録日時: 8年前

Re: gmpxx.hでC4146エラー

#3

投稿記事 by sudnonk » 8年前

すみません返信気づきませんでした!二十日も経ってしまいましたごめんなさい!

警告って無視できるんですね、初めて知りました。
ちゃんと実行できました。本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る