0

私はここで頭を叩いています..これらのLNK2001エラーを解決しようとしています。ヘルプページには多くの理由が記載されていますが、どれが当てはまるのかわかりません。

知識豊富なVS2005C ++の人がこれらを支援してくれませんか?私に質問をしてください..それは時々役立ちます。私がメンタリストのように見えることを恐れていなかったら、私はこれを説明するためにゴム製のアヒルを手に入れるでしょう:-)しかし、私はオフィスに座っています。

エラーLNK2001:未解決の外部シンボル "struct ethernetParams_t * ethernetData_g"(?ethernetData_g @@ 3PAUethernetParams_t @@ A)simple_Console.obj

私のコードsimple_console.cppは、Cで定義された構造を使用しようとしていますが、#includesが機能し#stdafxが機能する方法は私を超えています。ethernetParams_tを含むヘッダーはstdafx.hに含まれています

#include "CON_ethernet_defs.h"

質問してください...@@の後のビットの手がかりはありますか?

4

3 に答える 3

1

リンカは、ethernetData_gタイプが不明な外部シンボルがあることを通知していstruct ethernetParams_t *ます。これの原因はethernetData_g、インクルードするヘッダーで宣言されていますが、その定義は、リンクする必要のある別のオブジェクトファイルからのものであるためです。適切なオブジェクトファイルとリンクしていないため、リンカは適切な定義を見つけることができません

欠落しているオブジェクトファイルは、使用しようとしているライブラリからのものである必要があるため、そのフォルダーで.objファイルを探します。

于 2012-05-23T13:00:21.600 に答える
1

他の誰かが開発したコードを消費するには(たとえば、あなたの場合は静的ライブラリを使用して)、次の2つが必要です。

  1. 関数のシグネチャをプロジェクト(インクルードファイル)に提供します
  2. プロジェクト(ライブラリファイル)に関数の実装を提供します

あなたが最初のことをしたように見えますが、2番目のことはしていません。これは、リンカーがこの非常に不可解な形式で提供しているエラーを解釈する方法です...

于 2012-05-23T13:27:30.117 に答える
0

@Attilaと@moxはおそらくそれを釘付けにしました:あなたはあなたが使用している関数の実装を含むobjまたはファイルとリンクする必要があります。lib

ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]をクリックして、[リンカー]、[入力]の順に選択すると、リンク先のライブラリ/オブジェクトファイルのリストが表示および編集されます([追加の依存関係])。

構造がC++ではなくCで定義されていると言うと、別の考えられる問題はextern "C"インクルードファイルにないことです。ここでの説明を参照してください。

于 2012-05-23T13:45:11.853 に答える