NTLのtools.hのエラーが直りません

このQ&Aのポイント
  • NTLのtools.hを使用する際にエラーが出てコンパイルできません。具体的には、巨大整数ライブラリNTLを使用するためにincludeしたZZ.hの中で呼び出されているtools.hがエラーを起こしています。
  • NTLのtools.hのエラーを解決するためには、いくつかの解決策があります。まず、includeする順番を変えてみることができます。また、NTLのバージョンを最新に更新することでエラーが解消される場合もあります。
  • 開発環境がMFCの場合、プロジェクトの設定で必要なライブラリやヘッダファイルを正しく指定しているか確認することも重要です。さらに、MFC以外の開発環境でも同様のエラーが発生する場合は、環境の設定やパスの指定を見直す必要があります。
回答を見る
  • ベストアンサー

NTLのtools.hのエラーが直りません

他のモジュールに組み込むときにはでてこないのですが、ソケット通信の関数に巨大整数を使おうすると次のようなエラーが出てきてコンパイルできません。 > すべての出力が最新のものです。 1> ClientSocketDlg.cpp 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(151): error C2062: 型 'int' は不要です。 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(151): error C2062: 型 'int' は不要です。 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(151): error C2059: 構文エラー : ')' 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(151): error C2143: 構文エラー : ';' が '{' の前にありません。 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(151): error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?) 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(152): error C2062: 型 'int' は不要です。 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(152): error C2062: 型 'int' は不要です。 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(152): error C2059: 構文エラー : ')' 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(152): error C2143: 構文エラー : ';' が '{' の前にありません。 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(152): error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?) 1>C:\MinGW\msys\1.0\home\admin\c\ntl-5.5.2\include\NTL/tools.h(154): error C2062: 型 'long' は不要です。 ・・・ NTLというのは巨大整数ライブラリです。 プログラムの先頭に、巨大整数型ZZを用いるために、 #include <NTL/ZZ.h> というヘッダを付けます。これでエラーはなくなるはずなのですが、ZZ.hの中で呼び出されているtools.hがエラーを起こします。 なにかいい解決法があったら教えて下さい。 ちなみに開発環境はMFCです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

これだけではなんとも。 ありがちなものとしては、次のようなものが思いうかびますが、これ以外かもしれません。 #includeの順番を変えてみる → NTL/ZZ.hの前に読み込まれた中に、NTLで使用している名前と衝突するものがあって、#ifの条件分岐がうまく機能してなかったり、解釈が変わってたりしているかもしれません。 前に#includeで読みこまれるファイルの文法チェックをする。 → #includeは単純にファイルを埋め込むだけで、文法チェックはしません。括弧の対応間違いとか、宣言の最後の;忘れとかがあると、そのファイルではエラーとならず、後のファイルでエラーになることがあります。 Visual C++とGCCの違い → ファイルの置き場所からして、NTLはMinGW用と思われます。MinGWではGCCが標準のコンパイラです。 それぞれに独自機能があるので、そのあたりで差が出ているのかもしれません。

tcshacina
質問者

お礼

とりあえず引っかかる場所が同じだったので、使いそうもない関数をコメントアウトして、コンパイルできるようになりました。 あとで何か問題が起きなければいいのですが・・・ ありがとうございました。

関連するQ&A

  • winnetwk.hについて

    ネットワークプロバイダーのバージョンなどを表示されるプログラムを実行しようとしたのですが、以下のようなエラーがでて先に進めません。どうしたら直すことが出来るでしょうか? 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C2146: 構文エラー : ';' が、識別子 'dwScope' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C2146: 構文エラー : ';' が、識別子 'dwType' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C2146: 構文エラー : ';' が、識別子 'dwDisplayType' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C2146: 構文エラー : ';' が、識別子 'dwUsage' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C2146: 構文エラー : ';' が、識別子 'lpLocalName' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(147) : error C2146: 構文エラー : ';' が、識別子 'lpRemoteName' の前に必要です。 環境はVC++2005です。

  • bccは分かりましたがgccが使えません

    Cのソースの#include <stdio.h>でエラーになります。 gccではbccのbcc32.cfgで行うような設定はどのようにすればよいですか? MINGWのコンソールで $ echo $C_INCLUDE_PATH c:/msys/1.0/mingw/include;c:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/include このように出ます。 $ gcc myapp.c で#include <stdio.h>の行でコンパイルエラーです。 MINGWでは$C_INCLUDE_PATHを正しく設定できているみたいですが、gcc.exeにそれが伝わっていないみたいです。 AUTOEXEC.BATには何も追記したくないので何も追記していません。 どうすればライブラリのパスを通せますか?

  • stdio.hからsyntax error??

    10日でおぼえるC言語教室という書籍を購入し、その通りにシステム環境変数の設定を行ったのですが、stdio.hに対してNo such file or directoryの様な?文が出てきてしまいました。 そこで自分なりに調べた結果、ネット上にC_INCLUDE_PATHとCPLUS_INCLUDE_PATHも追加で設定する必要があると書いてありました。 この時点ですでに???ですが…とりあえずやってみたところNo such~のエラーはでなくなりました。 ただ、代わりにsyntax errorなどの様なエラーが沢山出てきてしまいました。(しかし、exeファイルは出来ていて実行は可能です) 自分で書いたコードなら書き間違いだと思うのですが、stdio.hは付属のCDーROMからのものなのでミスは無いと思うのですが… OSはvistaで、CドライブとDドライブが入っているものです。 この書籍でのCコンパイラはMinGWです。書籍付属のCD-ROMからmingw-jpを任意の場所(今回はDドライブ→新規→プログラム→MinGWの中)にコピーしてシステム環境変数pathの設定を行うとgccでコンパイルが可能というものです。 ちなみにシステム環境変数pathに設定したbinというフォルダがあるのは、mingw-jpの中で、場所はDドライブ→新規→プログラム→MinGW→mingw-jp→binです。 変数pathに追加したのは ;D:\新規\プログラム\MinGW\mingw-jp\bin; です。 C_INCLUDE_PATHとCPLUS_INCLUDE_PATHは両方ともD:\新規\プログラム\MinGW\mingw-jp\includeと記述しました。stdio.hはincludeのフォルダの中にちゃんとありました。 実際はmingw-jpの中にcodeというフォルダを作り、その中にhelloというフォルダを作り中にhello.cを記述してあります 以下がエラーの一部です D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:206: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:217: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:218: error: syntax error before "__gnuc_va_list" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:219: error: syntax error before "__gnuc_va_list" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:220: error: syntax error before "__gnuc_va_list" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:221: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:224: error: syntax error before "size_t" D:/新規\プログラム\MinGW\mingw-jp\include/stdio.h:226: error: syntax error before "size_t" 実際はまだまだエラーが続いてます ここで 1.書籍にはシステム環境変数pathの設定のみしか書いてありませんでしたが、上記のNO~というエラーが出てしまいます。私の設定の仕方が悪いのでしょうか 2.C_INCLUDE_PATHとCPLUS_INCLUDE_PATHを追加すると1のエラーは無くなりましたがこれってどういう事なのでしょうか 3.stdio.hに対してエラーが沢山出ていますが、これって何なのでしょうか 4.syntax errorが出ているのに実行ができるのは何故なのでしょうか 5.この方面は素人同然なので文中の解釈が変かもしれませんが、ご指摘があればお願いします 自分でも調べてみましたがお手上げ状態です。助けていただければ幸いです

  • C言語 "myfunc.h"がエラーになります。

    いつも大変お世話になっております。 C言語に関する質問です。 "myfunc.h"の箇所がコンパイルエラーになります。 全体のコードとコンパイルエラーが下記です。 #include <stdio.h> #include "myfunc.h" int main(void) { int num1, num2, ans; printf("1番目の整数を入力してください。\n"); scanf("%d", &num1); printf("2番目の整数を入力してください。\n"); scanf("%d", &num2); ans = max(num1, num2); printf("最大値は%dです。\n" , ans); return 0; } コンパイルエラー C:\MinGW>gcc text13.c -o text13 text13.c:2:20: fatal error: myfunc.h: No such file or directory #include "myfunc.h" ^ compilation terminated. です。 ご多忙のところ恐れ入ります。 どこがおかしいのか、 ご回答のほどよろしくお願い申し上げます。

  • C++のヘッダーについて

    C++のプログラミングをしています そこで出てきた問題なのですが・・・ class Aのヘッダファイルa.hをほかのcppファイルにインクルードすると、 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません error C2146: 構文エラー : ';' が、識別子 'test' の前に必要です。 とほかのヘッダファイルでコンパイルエラーがでます ヘッダファイルをインクルードしたときのみこのエラーがでて困っています。 解決法や、ヒントになりそうな事例を知りませんでしょうか?

  • string.h内でエラー

    Visual C++ 2005でプログラムを組んでいます。 あるプログラムをビルドすると以下のようにstring.h内でエラーが大量に発生します。string.hをインクルードしないとエラーは出ないことからおそらくstring.hまわりの設定がおかしいとは思うのですがよくわかりません。 エラー 2 error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 3 error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 5 error C2143: 構文エラー : ';' が ',' の前にありません。c:\program files \ microsoftvisualstudio8 \ vc\ include\ string.h 136 宜しくお願いします。

  • include<wtsapi32.h>でエラーがでる

    .netを使ってWTSQurySessionInformationのAPIを使う C言語プログラムを作ろうとしています。 ライブラリーにwtsapi32.lib ヘッダーにwtsapi32.h が必要と書いてあったので ライブラリーをインポートし、ヘッダーにPSDKの最新のものをいれましたが、エラーがでます。 c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\WtsApi32.h(109) : error C2061:構文エラー : 識別子 'LPWSTR といったものがたくさんエラーがでます、どうすれば 解決できるでしょうか。調べてもわからないため困っています。OSはXPを使ってます。

  • #include "_cv.h"の設定を教えて

    VisualStudioC++2010を用いて、#include "_cv.h"を使用したいのですが、ファイルが存在する場所 「C:\Program Files\OpenCV\cv\src」を追加のインクルードファイルに入れても以下のエラーがでます。 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2146: 構文エラー : ';' が、識別子 'icvDepthToDataType' の前に必要です。 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C2433: 'CvDataType' : 'inline' はデータ宣言をするのに使用できません。 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>C:\Program Files\OpenCV\cv\src\_cv.h(84): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ・・・・・ どなたか#include "_cv.h"の設定の仕方を教えてくれないでしょうか?

  • 複素数complex.hがおかしいのでしょうか?

    C言語初心者です。 根本的に間違えているかと思いますが、下記内容で困ってます。 C++で複素数を扱いたいと思い #include<complex.h> うんだら ふんだら と書きました。 環境は、Borland C++ 5.6 for Win32だと思います。 メモ帳でソースを作って、コマンドプロンプトでbcc32 ***.c とコンパイルしたのですが、ヘッダーファイルのエラー?が 出てるようです。(詳細は下記に示してます。) おそらく根本的なエラーが出てるとはおもうのですが、 エラーの内容が理解できません。ヘッダーファイルがどこにあるのかも わかりません。どうすればエラーがなくなるのか教えて頂きたいです。 よろしく御願い致します。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ エラー E2257 C:\Program Files\Borland\CBuilder6\Include\stl/_mbstate.h 52: , が必要 エラー E2453 C:\Program Files\Borland\CBuilder6\Include\stl/type_traits.h 64: '__true_type' 型のサイズは未知あるいはゼロ エラー E2453 C:\Program Files\Borland\CBuilder6Include\stl/type_traits.h 65: '__false_type' 型のサイズは未知あるいはゼロ エラー E2141 C:\Program Files\Borland\CBuilder6\Include\stl/type_traits.h 68: 宣言の構文エラー           ・           ・           ・ ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

  • windowsでLinuxで作成したソースをコンパイル

    Linuxで作成、 $gcc -Wall file.c で、通ったファイルをWindowsでも同様に通したいので、MinGWを使って、コンパイルしたのですが、 #include <sys/socket.h> の構文で引っかかってしまいました。どうやらインクルードファイルが無いようでしたので、 C:\MinGW\include C:\MinGW\lib 以下に、Linuxの /usr/include/ /usr/lib/ 以下のファイルをそのまま入れて、再度実行しました。 ヘッダーファイルは見つけて読んでくれたのですが、そのヘッダーファイルに書いてある関数(例:htons(), socket(), inet_addr(), connect())が参照できないとの事で、怒られてしまいます。 Linuxのライブラリファイルをそのまま入れたのがまずかったのかもしれないのですが、こいつのエラーを解消する有効手段が見つかりません。 問題解決のヒント、又は答えを教えていただけませんでしょうか。 どうか、お願い致します。

専門家に質問してみよう