我正在用C++编写一个* dll以连接到数据库。我尝试在控制台应用程序中使用afxdb.h,并且工作正常。现在,我想在我的* dll中使用相同的代码。因此,我将afxdb.h添加到stdafx.h中,并且在编译时给了我这个错误

mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in JunkDLL.obj
mfcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in JunkDLL.obj; second definition ignored
Creating library Debug/JunkDLL.lib and object Debug/JunkDLL.exp
Debug/JunkDLL.dll : fatal error LNK1169: one or more multiply defined symbols found

我的stdafx.h看起来像
#if !defined(AFX_STDAFX_H__123__INCLUDED_)
#define AFX_STDAFX_H__123__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "afxwin.h"
#include "afxext.h"
#include "afxdb.h"
// Insert your headers here
#define WIN32_LEAN_AND_MEAN// Exclude rarely-used stuff from Windows headers
#include "windows.h"
// TODO: reference additional headers your program requires here
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the  previous line.
#endif // !defined(AFX_STDAFX_H__123__INCLUDED_)

谢谢你的帮助。

最佳答案

您的DLL是statically linked to MFC。在这种情况下,MFC提供了自己的DllMain()入口点,而您的DLL不应该提供该入口点。

您可以在CWinApp派生的单例的InitInstance()方法或dynamically link your DLL to MFC中执行初始化。

10-07 16:19
查看更多