吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 603|回复: 14
收起左侧

[求助] C++ 报错 求助大佬

[复制链接]
定位重构 发表于 2024-9-7 13:44
FAILED: WinAPI.exe
cmd.exe /C "cd . && "E:\IDE\CLion 2023.3.4\bin\cmake\win\x64\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\WinAPI.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x86\mt.exe --manifests  -- C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1441~1.341\bin\Hostx86\x86\link.exe /nologo CMakeFiles\WinAPI.dir\main.cpp.obj CMakeFiles\WinAPI.dir\inject.cpp.obj CMakeFiles\WinAPI.dir\utils.cpp.obj CMakeFiles\WinAPI.dir\_file.cpp.obj  /out:WinAPI.exe /implib:WinAPI.lib /pdb:WinAPI.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK Pass 1: command "C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1441~1.341\bin\Hostx86\x86\link.exe /nologo CMakeFiles\WinAPI.dir\main.cpp.obj CMakeFiles\WinAPI.dir\inject.cpp.obj CMakeFiles\WinAPI.dir\utils.cpp.obj CMakeFiles\WinAPI.dir\_file.cpp.obj /out:WinAPI.exe /implib:WinAPI.lib /pdb:WinAPI.pdb /version:0.0 /machine:X86 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\WinAPI.dir/intermediate.manifest CMakeFiles\WinAPI.dir/manifest.res" failed (exit code 1120) with the following output:
main.cpp.obj : error LNK2019: 无法解析的外部符号 "public: static signed char * __cdecl FM::_file::file2mem<signed char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (??$file2mem@C@_file@FM@@SAPACAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z),函数 _main 中引用了该符号
WinAPI.exe : fatal error LNK1120: 1 个无法解析的外部命令
ninja: build stopped: subcommand failed.
image.png
image.png
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xialichen 发表于 2024-9-7 15:55
静态变量,类内声明,类外初始化
 楼主| 定位重构 发表于 2024-9-7 16:03
q3125418 发表于 2024-9-7 16:26
chenzhigang 发表于 2024-9-7 16:53
这不是告诉你了  无法解析的外部符号 "public: static signed char * __cdecl FM::_file::file2mem
没找到这个函数的实现  如果函数声明把前面的static 去掉可以吗
chenzhigang 发表于 2024-9-7 16:55
而且vector mem 是你的局部变量 return 出去可以吗
DEATHTOUCH 发表于 2024-9-7 16:55
像是函数签名和实现不符合,按照签名找不到这个实现。签名里有一个 static ,实现里面没有。不知道是不是这个原因。
 楼主| 定位重构 发表于 2024-9-7 17:21
chenzhigang 发表于 2024-9-7 16:53
这不是告诉你了  无法解析的外部符号 "public: static signed char * __cdecl FM::_file::file2mem
没找到 ...

去掉也不行 mem可以return出去
 楼主| 定位重构 发表于 2024-9-7 17:22
DEATHTOUCH 发表于 2024-9-7 16:55
像是函数签名和实现不符合,按照签名找不到这个实现。签名里有一个 static ,实现里面没有。不知道是不是这 ...

在实现中 补上 static 了 还是不行
DEATHTOUCH 发表于 2024-9-7 17:52
问题挺复杂的,我也是学了一下:

模板定义和实现最好都写在 .h 的文件里,这样会自动特化,如果在其他文件实现就需要指定类型进行特化实现。

比如你的 _file::file2mem() ,如果直接在定义模板的时候把实现代码写进去,就没这个报错了。
否则在 .cpp 的文件需要特化实现,比如:

[C++] 纯文本查看 复制代码
template <>
int8_t* FM::_file::file2mem(std::string &file_path) {
    // 具体实现代码
}


这样才行。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 01:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表