-2

「外部クラス定義」を含むヘッダー ファイルがあります。これらのヘッダー ファイルとクラスはどちらも、異なる C++ アセンブリにあります。現在、この「extern」クラス関数にアクセスしようとしている別の C++ アセンブリにクラスがありますがLNK2001: unresolved external symbol " class LMSystem LM"(?LM@@3VLMSystem@@A)LNK2019などのあらゆる種類のリンカー エラーがあります。

以下はコード スニペットです。CPP ファイルの場合

/このヘッダー ファイルには extern 参照が含まれています/

#include "../lm/lm.h"



BOOL FDInitHW (void) 
{ 
   char pFileName[TALLY_MAX_PATH];

   ASSERT(0 != g_pFdbPath);
   strcpy(pFileName, g_pFdbPath);
   strcat(pFileName, FILENAME_HW_KB);

   return SUCCESS == LM.LMIOListReadSelective(pFileName, 
                           LMIO_READREPLACE, FDGetSelectListPtrArray()); 
}

Lm.h の内容

class LMSystem
{
public:   
   LMSystem();
   ~LMSystem();

   // getting a specific list
   short  LMIOListReadSelective(char *fname, unsigned short readflags, LIST_SELECTOR* select_array[]);
}; 
    extern LMSystem LM;  // the library global LMSytem

このリンカ エラーの解決を手伝ってもらえますか? VC++ 6.0 で開発された古いアセンブリは正常に動作しており、VS2012 で作成しているこの Win32 C++ アセンブリでも、LMSystemF12 を使用してクラスの定義に移動できるため、プロジェクト プロパティで何かを行う必要があると思います。またはIntellisenseですが、理想的には、LM.Hヘッダーファイルの変数を指す必要があります。別の C++ .dll で別の C++ .dll で定義されたあるタイプの関数を使用する方法を伝える多くの投稿を見てきました。多くのプロジェクト レベルの設定変更がありますが、常に正しい結果が得られるとは限りません。したがって、誰かがこの問題の解決策を教えてくれれば、それは大きな助けになります。

4

1 に答える 1

1

のインスタンスをLMどこかに作成する必要があり、リンカがそれを見つけられる必要があります。たとえば、ソース ( ) ファイルの1 つLMSystem LM;に追加します。.cpp

于 2014-08-01T10:45:07.193 に答える