天天看點

error LNK2005: _DllMain@12 已經在 XXXX.obj 中定義

出現這種問題的情形有很多,這裡隻說明下我遇到的這種情形及其解決方法:

問題原因:

       1、 用VS的MFC DLL模闆建立DLL項目;

       2、出于實際需要,将自動生成的App模闆代碼删掉,改用win32風格的DLL入口:

            BOOL APIENTRY DllMain( HANDLE hModule,

                          DWORD ul_reason_for_call,

                          LPVOID /*lpReserved*/

                                                          )

              {

                       switch (ul_reason_for_call)

                      {

                             case DLL_PROCESS_ATTACH:

                                      ......

                        }

                      return TRUE;

               }

         3、經過上述改動後,編譯,就會報出DllMain的連結錯誤。

解決:

           很明顯,根據連結給出的錯誤資訊,一個項目裡面出來了兩個入口,這肯定是不允許的。可是,另外一個入口在哪呢?明明已經删掉了啊(App類)。

            答案是:删掉預處理器_USRDLL。

繼續閱讀