gpt4 book ai didi

c++ - lnk4022 : undecorated symbol - how to fix?

转载 作者:行者123 更新时间:2023-11-28 05:03:54 38 4
gpt4 key购买 nike

当我链接我的 C++ DLL 程序时,我收到以下错误和警告:

    Severity    Code    Description Project File    Line    Suppression State
Warning LNK4022 cannot find unique match for symbol 'Init' MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "void __stdcall Init(void)" (?Init@@YGXXZ) defined in Release\MTF_Garch.obj MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: long __thiscall ATL::CComCriticalSection::Init(void)" (?Init@CComCriticalSection@ATL@@QAEJXZ) defined in Release\stdafx.obj MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "protected: int __thiscall CAppDestinations::Init(void)" (?Init@CAppDestinations@@IAEHXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: void __thiscall CMFCDragFrameImpl::Init(class CWnd *)" (?Init@CMFCDragFrameImpl@@QAEXPAVCWnd@@@Z) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "protected: void __thiscall CMFCFontComboBox::Init(void)" (?Init@CMFCFontComboBox@@IAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "protected: virtual void __thiscall CMFCPropertyGridCtrl::Init(void)" (?Init@CMFCPropertyGridCtrl@@MAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "protected: void __thiscall CMFCPropertyGridProperty::Init(void)" (?Init@CMFCPropertyGridProperty@@IAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "protected: void __thiscall CMFCToolBarSpinEditBoxButton::Init(void)" (?Init@CMFCToolBarSpinEditBoxButton@@IAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: void __thiscall CPaneDivider::Init(int,class CWnd *)" (?Init@CPaneDivider@@QAEXHPAVCWnd@@@Z) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: void __thiscall CRecentDockSiteInfo::Init(void)" (?Init@CRecentDockSiteInfo@@QAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: void __thiscall CRecentPaneContainerInfo::Init(void)" (?Init@CRecentPaneContainerInfo@@QAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "protected: void __thiscall CVSListBoxBase::Init(void)" (?Init@CVSListBoxBase@@IAEXXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfc140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: long __thiscall ATL::CComCriticalSection::Init(void)" (?Init@CComCriticalSection@ATL@@QAEJXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\mfcs140u.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: long __thiscall ATL::CComCriticalSection::Init(void)" (?Init@CComCriticalSection@ATL@@QAEJXZ) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\atls.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Warning LNK4002 "public: int __thiscall ATL::_stdcallthunk::Init(unsigned long,void *)" (?Init@_stdcallthunk@ATL@@QAEHKPAX@Z) defined in D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\atlmfc\lib\x86\atls.lib MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Error LNK2001 unresolved external symbol Init MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\MTF_Garch\MTF_Garch.def 1
Error LNK1120 1 unresolved externals MTF_Garch d:\Users\ypx7647\Documents\Visual Studio 2017\Projects\MTF_Garch\Release\MTF_Garch.lib 1

显然,我的 VS 2017 社区解决方案中存在很多 Init,但我不确定它们来自何处。

.def 文件是这样的:

LIBRARY   MTF_Garch
EXPORTS
Init @1
OnParamsChange @2
Calculate @3
ReplaceStr @4
IntrfProcsRec @5

我的包括:

#include <windows.h>
#include "IndicatorInterfaceUnit.h"
#include "TechnicalFunctions.h"
#include <string>
#include <vector>
#include "Garch.h"

在 Garch.h 中

#include <ql/auto_link.hpp>
#include <ql/quantlib.hpp>
#include <boost/geometry/index/detail/utilities.hpp>
#include <ql/models/volatility/garch.hpp>
#include <ql/math/optimization/simplex.hpp>
#include <ql/math/optimization/levenbergmarquardt.hpp>

我不知道如何使用 ATL 文件,尽管它是我创建的 MFC DLL 解决方案。其余的我不确定它们是什么。

由于我是 C++ 的新手,有人可以告诉我如何告诉链接器它应该使用哪个 Init(我知道 .def 文件有一个 EXPORT 语法,但一直无法找到文档)或我如何摆脱所有其他我不需要的。

谢谢。

最佳答案

您需要在 .def 文件中指定要导出的符号的错位名称。我找到这些的通常方法是基于链接器错误消息中 undefined symbol 的名称。我将更新 .def 并重建。

查看您列出的候选项,您可能想要导出在 MTF_Garch 文件中定义的符号。将导出文件中的“Init @1”行替换为

?Init@@YGXXZ @1

相反。您也可以为其他导出使用损坏的名称,但由于链接器发现它只有一个可能的符号,因此它目前不需要它们(但将来可能需要)。

关于c++ - lnk4022 : undecorated symbol - how to fix?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288926/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com