問題タブ [multiple-definition-error]
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++ - QString::fromUtf8 の複数の定義と未定義の参照
巨大なプロジェクトを Qt4.x から Qt5 に移行しています。現在、私は解決できないこの問題を抱えています:
いくつかのインクルードが重複しているに違いないことは知っていますが、プロジェクトが非常に大きいため、それを見つける方法がわかりません。それは奇妙QString
です。デフォルトで追加されているため、何もする必要はないと思いますインクルードまたは何かの。この同じ問題についてウェブで検索しましたが、どうやらそれについては何もありません。含まれるものは次のとおりです。
aisinfowidget.cpp:
gpssettingswidget.cpp (ここから未定義の参照が来ます)
そして、ここに私の.proファイルがあります:
ご覧のとおり、serialport を QT 変数に追加し、ライブラリをリンクしたので、未定義の参照の理由がわかりません。QString の多重定義を解決すると、これらの問題が解決する可能性があります。誰かが私を正しい方向に向けてくれることを願っています。
どうもありがとうございました。
PS: コードは私のものではないため、問題を見つけるのがさらに難しくなっています。
編集
ライブラリへのリンケージと gpssettingswidget.cpp のすべてのインクルードにコメントを付けてみましたが、同じ未定義の参照エラーが発生しました。それでも多重定義エラーの可能性があります。私がそれを解決するまで、私は他のものを確信することはできません.
編集2
どうやら、これによると、 Qt5では追加するだけです
ファイルで、QT += serialport で .pro ファイルですが、それでも同じエラーが発生します。コンパイラが何らかの形でライブラリを見つけることができないと確信していますが、他に何をすべきかわかりません。また、Qt4 または Qt5 でコンパイルされたライブラリを使用する必要があるかどうかもわかりません。
私は両方を試しましたが、同じエラーが何度も発生しました。
編集 3 いいね!
千の異なる方法でコンパイルした後、エラーを解決することができましQtSerialPort
た.未定義の参照を解決したファイルを取得しました. *
もっと。
最終編集
Qxmpp ライブラリについても同じことを行い、これらの厄介なエラーをすべて解決しました。現在、他のエラーがありますが、その時点を過ぎたので、質問は回答済みであると言えます。どうもありがとうございました。
c++ - 異なる値の 2 つのキーを持つ C++ マップ
異なるデータ型の 2 つのキーを持つことができるが、同じ構造体を指すマップが必要です。
次に、次のstd::map
ように検索できるようにします。
これは可能ですか、それとも 2 つのマップを作成する必要がありますか? 無駄に思えます。または、演算子などをオーバーロードする必要がありますか?
c++ - SDL C++ : SDL エラーの複数定義
こんにちは、私は C++ で SDL チュートリアルに従っています。いくつかのレッスン ファイルがあり、そのうちの 1 つをコンパイルすると、ここで最初に定義された SDL の複数定義のエラーが発生しました。
Dev c++ を使用しています。
エラーの解決策をグーグルで検索しましたが、問題が解決しないようです。
main.cpp:
エラー:
行番号がないので、実際に特定のコードのどこに問題があるのか わかりません。ありがとう
c - libc.a 内の mallocr.o ファイルのリンクを防止
これは私の会社のためなので、具体的になりすぎるのは怖いですが、試してみます。
既存の ANSI C コードのサポートをプラットフォームに追加しようとしています。GCC 4.7.2 と GNU リンカを使用しています。newlib の一部を使用しますが、他の C ライブラリ、具体的にはlibc.a
. これの最終目標は、マイクロの RAM に入れる EXE または ELF イメージ (これは PowerPC アーキテクチャ マイクロ用です) を取得することです。これは Windows XP で行われています。ビルド環境やツールチェーンではなく、単にバッチ ファイルを使用しています。
私のビルド エラーの 1 つは、malloc/free 関数の複数定義の問題です。malloc.o
cmd ウィンドウは、 と の両方にこれらの定義があるというエラーを吐き出しますmallocr.o
。これらは両方とも 内にありますlibc.a
。「r」mallocr.o
は再入可能であると言われました。また、私たちのプラットフォームは再入可能性をサポートしていないと言われました。
mallocr.o
内からの のリンクを防止することで、このエラーを解決しようとしていますlibc.a
。これは私が迷っている部分です。これを行う方法がわかりません。Google は役に立つ情報を何も見つけていません。また、私の問題を解決する質問をこのサイトでまだ見つけていません。これが可能かどうかはわかりません。
この質問に含める特定のコード スニペットは実際にはありません。以下は、コマンド ウィンドウからのエラーです。私は、共有したくない会社固有の事柄を *d アウトしました。
c++ - 列挙の多重定義
次のように、include.h に Color、Return_main_menue、Playertype という名前の列挙があります。
また、tools.cpp と tools.h tools.h という名前のソース ファイルもあります。
ツール.cpp:
main.cpp で mainmenue() を使用します。
しかし、コンパイラはエラーを返します:
blackberry - Blackberry 7 - SDK を複数のアプリにリリースすると問題が発生する
以下の問題は個別に説明されていますが、機能する解決策が見つかりませんでした。したがって、完全なストーリーと問題のリストを投稿します。
複数のアプリで使用する SDK (midlet jar) を作成しています。この SDK は、永続ストアを使用して特定のデータを保存します。
1. ストアにアクセスするためのキーが SDK にハードコードされています。複数のアプリが同じキー値でストアにアクセスしようとすると、競合の問題が発生します。
2. Persistable オブジェクトのパッケージ/クラス名が複数のアプリで同じです。このため、アプリの起動中に「Class Multiply defined」エラーが発生します。
2 については、以下のオプションを熟考してきましたが、いずれも問題を解決していないようです:
1. Vector などの標準オブジェクトを拡張せず、標準オブジェクトを使用します。
問題: データのリサイクルが失われ、競合が発生します。
2. ライブラリを使用するアプリケーションごとに一意の名前でライブラリを構築します。
問題: これは、使用したいすべてのクライアントに対して異なる SDK をリリースする必要があることを意味します。
3. 次のアプリのパッケージをロードする前に、Persistable オブジェクト クラスが既に存在するかどうかを確認します。
問題: 最初のパッケージがアンインストールされるとどうなりますか? クラスタイプは削除されますか?
4. Persistable インターフェイスを実装するようにアプリに依頼し、コールバックでキーを渡します。
永続ストアを使用できないという理由だけで、アプリにいくつかの値を渡すように要求するのは正しくないように思えます。
そのため、現在のところ、Persistable オブジェクトを使用する SDK は完全に壊れているようです。それとも、何か不足していますか?
タスクを達成するための他の代替提案も大歓迎です。
c - 複数のコンパイル単位の場合、同じヘッダー ファイルが含まれているため、複数の定義を避ける
よく使う機能がありますf()
。追加のコンパイルなしで簡単に使用できるようにf()
、ヘッダーファイルに入れたい:util.h
f()
user1.c
:
util.h
:
のコンパイルuser1.c
:
この問題は、2 つのコンパイル単位unit2.o
とがある場合に発生しunit3.o
ます。それらのソースコードは次のとおりです。
user2.c
:
user3.c
:
multiple definition of f
これらのソース コードを次のようにコンパイルしようとすると、エラーが発生します。
問題は、問題をどのようにmultiple definition
解決できるかです。または、より良い解決策はありますか?
実際には、何百もの関数がutil.h
あり、約 50 の異なるコンパイル ユニットがあります。
次の理由から、ライブラリとユーティリティ関数のコンパイル手順の使用を避けようとしています。
- 私が使用するさまざまなプラットフォームがたくさんあります。
cmake
簡単な解決策、つまりを使用しないなどがあるのだろうか。- また、コプロセッサーのクロス コンパイルも使用します。
- ユーティリティ関数のコンパイルで使用されるフラグを、ユーザー コードのコンパイルで使用されるフラグと同じにしたい。
java - Android Java - 複数のdex定義を防ぐには?
基本的に、私の製品は jar ファイルであり、クライアントがそれを解凍し、.class ファイルを jar ファイルにパッケージ化してから、jar ファイルをアプリケーション クライアントに配布することを期待しています。
したがって、アプリケーションは、同じクラス定義を含む 2 つの異なる jar ファイルを使用することになる可能性があります。したがって、Java コンパイラ (または Android の dex) は文句を言います。
もう少し説明すると:
- client1 は私の jar を受け取ります ==> 解凍 ==> jar1 の .class ファイルをパッケージ化します
- client2 は私の jar を受け取ります ==> 解凍 ==> jar2 のパッケージ .class ファイル
- アプリが jar1 と jar2 を取る ==> 問題! クラスの複数の定義。
どうすればそれを防ぐことができますか?
c++ - クラスのコンテキストでのエラー LNK2005 および LNK1169
だから...私は、幾何学的図形を表すクラスの階層を実装することになっています。ただし、プログラムの実行中に次のエラーが発生しました。
これは抽象クラスであるはずです: Shape.h
Shape を継承するクラスCircle.h :
クラスの実装: Circle.cpp
Point.h :
宿題.cpp :
どうすればエラーを取り除くことができますか? コードは私を圧倒しました...