問題タブ [mingw-w64]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::sort を使用した非常に小さな std::vector に対して std::bad_alloc 例外をスローする C++
コンマ区切りデータ (CSV) を扱う C++ のプロジェクトに取り組んでいます。私がしているのは、.csv ファイルから CsvRow オブジェクトのベクトルにデータを読み取ることです。
それで、今日、私は本当に奇妙な std::bad_alloc 例外がはるかに奇妙な状況でスローされることに遭遇しました。つまり、例外がスローされるまでもう少し時間を確保できた最初のテスト ケースは、csv ファイル全体をベクターに読み込むことでした。ファイルは 500,000 行で構成され、そのサイズは約 70MB です。ファイルは魅力のようにメモリに読み込まれましたが、ソート手順の数秒後に std::bad_alloc がスローされます。約 67MB の RAM を使用しました。注: メモリ消費を抑えるために、boost の flyweights を使用しています。
しかし、このテスト ケースはさらに奇妙でした。数百行の 146KB のファイルを読み込んでいるのですが、今回はデータをベクトルに読み込んでいるときに例外が発生しました。
メモリ リークの疑いがありますが、私のマシンには 8 GB の RAM があり、64 ビット Windows 8 を使用しています。CodeBlocks と MinGW 64 ビット ブースト ディストリビューションを使用しています。どんな助けでも大歓迎です。std::bad_alloc がスローされているコードのチャンクを次に示します。
csv ファイルからのデータの読み取り
/li>クラスに格納されている内部構造体を使用してベクトルを並べ替える
/li>
次に、std::sort()
CsvRows のベクトルを並べ替えるために使用しています
この行は非常に疑わしいように見えますが、これらのハッシュ セットを初期化する簡単な方法を見つけることができませんでした。
デストラクタでこれらのハッシュ セットを削除すると、プログラム (SIGSEGV) がクラッシュします。もう 1 つ注意すべき点は、MinGW が 64 ビットであるため、デフォルトの 32 ビット gdb デバッガを使用できないことです。32 ビット gdb にはバグがあり、MinGW 64 では動作しません。
編集:
CsvRow boost::flyweight<std::string>
クラスで使用する は問題を引き起こす可能性がありますか?
それに加えて、CsvRow
クラスの一部を次に示します。
クラス のオーバーロード[]
された演算子:CsvRow
前もって感謝します
編集 -
解決済み:この質問は私の問題を解決しましたが、考えもしませんでした。に渡すすべてのカスタム コンパレータはstd::sort()
、厳密な弱い順序付けである必要があります。つまり、
1. 非反射
2. 非対称
3. 推移性
4. 非比較性の推移性
詳細: This question and This Wiki article
実際、私は最初のもの (非反射性) には従いませCsvRow
んでしtrue
た。代わりに返品してfalse
ください。CsvRow a
とCsvRow b
が等しい場合にのみデフォルトの戻り値を変更することで、問題全体を解決しました。
助けようとしたすべての人に感謝します。同様の問題が発生した場合に備えて、この解決策を覚えておいてください。それはかなりトリッキーです。
c++ - C++ Code::blocks のコンパイルの難しさ
私はプログラミングがまったく初めてで、家に持ち帰って完成させたいと思っていた学校のプロジェクトに取り組んでいたので、すべてのファイル (code::blocks のファイルを含む) をコピーして、簡単に取得できると考えました。すぐに起動して実行してください!ただし、ファイルを開いてプログラムを実行しようとすると、次のようなエラーのリストが表示されます。
「_Unwind_SjLj_Register」への未定義の参照
「_Unwind_SjLj_Resume」への未定義の参照
「__gxx_personality_sj0」への未定義の参照
「_Unwind_SjLj_Unregister」への未定義の参照
などなど..
コピー元のコンピューターには別のディレクトリがあった可能性が高いため、この問題はファイルの欠落が原因である可能性が高いと思います。それとも、私が作業していた 32 ビット バージョンと比較して、Windows 7 の 64 ビット バージョンを使用していることが原因でしょうか? (いくつかの潜在的なアイデアを考えようとしているだけでは本当にわかりません)。
誰かが解決策を知っていますか? 単純にアンインストールして、minGW と SFML を自分で再インストールする必要がありますか? または、アンインストールせずにこれを回避する方法はありますか。
ありがとう
dll - dlltool --add-indirect (-a) に関する情報の検索
dlltool の --add-indirect オプションに関する詳細情報を探しています。このオプションはいつ使用しますか? それは何をするためのものか?
このオプションに関する binutils ヘルプからの情報:
がエクスポート ファイルを作成するときに
dlltool
、エクスポートされた関数をインポート ライブラリを使用せずに参照できるようにするセクションを追加する必要があることを指定します。それが何を意味するにせよ!
c++ - C++ mingw 64 で DLL をコンパイルする
C++ で DLL をコンパイルし、VBA からライブラリを呼び出したいと考えています。私はwindows32ビットでこれを行いました。しかし、私は仕事で Windows 64 ビットを使用しているので、このような演習を再現したかったのです。この事実を考慮して、mingw 64 をダウンロードしました。
私の例:
main.h
main.cpp
dll をコンパイルするときに、次のリンカー オプションを渡します。
および/または
また、次のような .def ファイルも生成します。
次のような.defファイルを期待していました(私の32ビットPCの場合と同様):
次に、次のように VBA から dll と関数を呼び出します。
問題は次のとおりです。関数は VBA エディターから呼び出すことができ、正しい結果が得られますが、Excel シートから呼び出すと、別の数値 (渡された引数のアドレス??) がスローされます。Excel内で試した後にVBAから関数を呼び出そうとすると、VBAはエラーをスローします(スタック領域外)。
mingw4.7 32bit を使用している場合、この問題は発生しません。問題は、mingw 4.6.3 64bit を使用してコンパイルした場合です (mingw4.7 64bit をインストールしましたが、インターネットで 4.6.3 の方が安定していると言っている人を見つけました)。
また、リンカー オプションを渡さなくても、.def ファイルが上記のファイルと同じに見えることにも気付きました。
誰でも助けることができますか?何が起こっていますか?mingw64 または vba/Excel は失敗していますか? または私のmingw64構成ですか?
更新....わかりました私はこのサイトを見つけました: https://sites.google.com/site/jrlhost/links/excelcdll#arrayと VBA で関数を使用して反復することで説明されているように、私の関数 add2 はワークシートから動作します。
次に、ワークシートで fromWorksheetAdd2 を使用し、VBA で Add2 を使用できます。ただし、このアプローチはちょっと面倒です。誰かがエレガントなアプローチで助けてくれることを願っています。
build - openssl-1.0.1f msys/mingw64 build fail
I am getting an error building openssl-1.0.1f with msys/mingw64:
when I run .Configure I get:
Soooooo seems pretty easy I just need to change the backslashes to slashes
I open .Configure and search for Ranlib and I get:
Farther down:
Oookkeeee why not change \s*/RANLIB= \$(CROSS_COMPILE)/; to \s*/RANLIB= /$/(CROSS_COMPILE)/;
How I feel:
http://i0.kym-cdn.com/photos/images/original/000/234/765/b7e.jpg
For those still wondering, yes I am a beginner.
Soooo my questions:
Is ranlib path the real problem here? If so, how can I make msys see slashes instead of backslashes? If you know the answer, do you think you can use concise and clear explanations?
gcc - 64 ビット用の Mingw64 の構成
Mingw64(mingw-w64-v3.1.0.tar.bz2)を設定しようとしています。
実行 ./configure
して、次のメッセージを受け取りました。
構成自体は問題ありませんでした。インストールできました。
でもmingwをインストールしたディレクトリ名はlib32
構成メッセージが言ったように、64ビット用のMingw64をインストールしていないと思います。
64ビット用に構成するにはどうすればよいですか?
–build
のようなオプションを試しまし./configure –build=x86_64-w64-mingw32
た。
mingw - mingw とのクロスコンパイル時に zlib ヘッダーが見つかりませんか?
私は走っています./configure --host=x86_64-w64-mingw32
が、何らかの理由で私に教えてくれ"zlib header not found."
ます。パッケージをインストールしました( apt-get install zlib1g-gev
)が、それでもこれが表示されます。
実行する./configure
と、正常にコンパイルされます。
MinGW-64 を使用して、Debian 7 で Windows 用の 64 ビット実行可能ファイルをクロスコンパイルしようとしています。
この問題を解決したり、このようなことを回避するにはどうすればよいですか?
qt - MinGW 64 ビットで Qt - OpenGL をビルドするには?
実際には、各 Qt インストーラーには、OpenGL
ファイルのタイトルがある場合とない場合のインスタンスがあります。私が理解しているようにOpenGL
、ファイル名に存在することはそのサポートを意味します。したがって、アプリケーションで OpenGL を使用する必要がある場合は、Qt-OpenGL をインストールする必要があります。ただし、MinGW および OpenGL を使用する Windows 64 ビット用の Qt インストーラーはありません。ここでも見つけられませんでした。Qt-OpenGL MinGW for Windows 64 ビットを作成するにはどうすればよいですか?
c++ - GLM のインストール - MinGW 64
私がやろうとしているのはopenglチュートリアルのチュートリアル4をコンパイルすることだけなので、何か間違ったことをしていると思います。GLM に関連する多くのエラーが発生し続けており、それを修正する助けが必要だと思います。これは、コンパイルしようとしたときに受け取るエラーです (他のすべても正しくインストールしたと思います)。
仕様は mingw 64、windows 7 です。glfw が動作することはわかっています。グリューについてはわかりませんが、グリューに問題はありません。適切なフォルダーのglmヘッダーファイルに何度も配置しました。
c++ - qt5.2.1 Linux から Windows へのクロス コンパイル
QT5 静的アプリをクロスコンパイルしようとしています。コンソール アプリでは正常に機能しますが、グラフィカル アプリでは機能しません。ここにすべてがあります:
main.cpp :
MainWindow.cpp :
MainWindow.h :
MainWindow.ui :
win32.pro :
それから私は走ります
そして取得します:
INCLUDEPATH と LIBS libGLESv2.a、libEGL.a、glu32.a、glut32.a、opengl32.a (すべてインクルード パスに存在する) にインクルードしようとしましたが、エラーはまったく同じままです。
http://db.tt/4nro6wuvからファイルをダウンロードできます。
足りないものを見つけるのを手伝ってくれませんか? ありがとう。