C++ エラー: LINK2005
高洛峰
高洛峰 2017-05-16 13:23:40
0
1
616
  1. 問題の説明
    common.hは、すべての型エイリアスと構造体宣言を定義し、mass_diffusion.hheat_conduction.hmass_diffusion.hheat_conduction.hによって参照されます参照元man.cpp をコンパイルすると、リンク時にエラーが報告されました。この防御構文では、各ファイルには 1 つの init 関数のみが外部に公開されていますが、ファイル内に同じ名前の関数が存在するのはなぜですか。エラーは外部に報告されますか? LINK2005。我已经使用了#ifndef ... #define ... #endif ErrorMessage

  2. Visual Studio 2017 Compiles C ++エラー:
  3. LNK2005MASS_DIFFUSION.OBJ "VOID __CDECL Compute(class STD :: vector< structユーザー

    、class std :: allocator&lt; struct user&gt;&gt; std::vector<struct item ,class std::allocator<struct item >
    )」が heat_conduction.obj に定義されています。 関連コード

  4. //common.h
  5. #ifndef _COMMON_H#define _COMMON_H...

    構造体ユーザー;

    構造体項目;構造体関係;...
    typedef unsigned int _container_number_;
    typedef unsigned int _value_number_;
    。 ..
    typedef std::vector<user*> user_container;
    typedef std::vector<item*> item_container;
    #endif // !_COMMON_H
    ...

    //mass_diffusion.h

    #include "common.h"
    void init_md(user_container
    _ulist, item_container
    _ilist){...};
    void compute(user_container _ulist, item_container _ilist) {...};
    ...
    //heat_conduction.h
    # include "common.h"extern void init_hc(user_container _ulist, item_container
    _ilist);
    void compute(user_container _ulist, item_container _ilist);
    ...
    //heat_conduction.cpp
    #include "heat_詐欺duction .h"void init_hc(user_container _ulist, item_container
    _ilist){...};
    void compute(user_container _ulist, item_container _ilist) {...};
    ...
    //main. cpp
    #include "mass_diffusion.h"#include "heat_conduction.h"

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(1)
PHPzhong

それぞれのモジュールは同じファイルにリンクされているため、リンカーは .h で公開されているものを気にしません。解決策は、各モジュールを so または dll にコンパイルしてから呼び出すか、名前空間を使用することです

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート