草庐IT

C++:错误 LNK:无法解析的外部符号,由虚函数产生

我的界面的类等概览!Animal.H:classAnimal{public:virtualvoidwalk();}动物.CPP=空牛.H:classCow:publicAnimal{public:virtualvoidwalk();}在这里它应该自动知道函数walk是从它派生的类中获取的,对吗?(例如Animal..)当我不定义函数walk时,它应该说我应该正确定义它......?Cow.CPP:voidCow::walk(){//dosomethingspecificforcow}SomeOtherClass.HnamespaceSomeNamespace{voidLetAnimal

Win11安装SQL server 2012 2019启动Sql Server进程服务启动失败1067:进程意外终止解决方法

此问题原因在运行Windows11的系统上,存储设备磁盘支持的大于4KB磁盘扇区大小。由于文件系统不受支持,SQLServer将无法启动,因为SQLServer当前支持512字节和4KB的扇区存储大小。所以解决方法需要虚拟磁盘扇区大小为4KB或512字节。注册表编辑器1.导航到计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device。2.在“编辑”菜单上,指向“新建”,然后选择“多字符串值”。将其命名为ForcedPhysicalSectorSizeInBytes。3.修改新值,写入*

c++ - LNK2019 当包含 asio header 时,使用 cmake 生成的解决方案

我正在尝试使用cmake和boost库将一个大项目从gcc(Linux)移植到msvc(windows)。该项目在gcc上编译和运行良好,但在msvc上它返回以下错误:Dyna.obj:errorLNK2019:unresolvedexternalsymbol"void__cdeclboost::throw_exception(classstd::exceptionconst&)"(?throw_exception@boost@@YAXABVexception@std@@@Z)referencedinfunction"void__cdeclboost::asio::detail::do

c++ - 多文件 <iostream> 错误 LNK2005 in VS2015 with/Za

当我从VS2013迁移我的项目时,我发现了一些奇怪的错误。以下是用于重现它的新创建项目的简化代码:A.cpp:#includeexternvoidfoo();intmain(){std::coutB.cpp:#includevoidfoo(){std::cout要添加的重要一点是项目将“禁用语言扩展”设置为是(/Za)。如果没有此设置,它会正常构建。输出是一长串以下错误:1>B.obj:errorLNK2005:"public:staticboolconststd::numeric_limits::is_signed"(?is_signed@?$numeric_limits@F@std

c++ - 访问静态变量 C++ 时出现 LNK2001 错误

我在尝试使用纹理时试图在我的代码中使用静态变量,但是我不断收到此错误:1>Platform.obj:errorLNK2001:unresolvedexternalsymbol"private:staticunsignedintPlatform::tex_plat"(?tex_plat@Platform@@0IA)我已经在cpp文件中正确地初始化了这个变量,但是我相信这个错误是在尝试以另一种方法访问它时发生的。.hclassPlatform:publicObject{public:Platform(void);~Platform(void);Platform(GLfloatxCoordI

时间:2019-05-06 标签:c++unique_ptr参数传递

假设我有以下代码:classB{/**/};classA{vectorvb;public:voidadd(B*b){vb.push_back(b);}};intmain(){Aa;B*b(newB());a.add(b);}假设在这种情况下,所有原始指针B*可以通过unique_ptr处理.令人惊讶的是,我无法找到如何使用unique_ptr转换此代码。.经过几次尝试,我想出了以下代码,它可以编译:classA{vector>vb;public:voidadd(unique_ptrb){vb.push_back(move(b));}};intmain(){Aa;unique_ptrb(

c++ - msvcprtd.lib(MSVCP100D.dll): fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

我创建了一个vs2010win32程序(操作系统:Win8-64bit)然后,我尝试通过这样做将这个win32程序转换为x64:ConfigurationManager->newsolutionplatform(selectx64)->copysettingsfromwin32vs2010在之前的win32程序的基础上新建了一个x64程序。但是,当我尝试编译和运行x64程序时,出现一个错误:msvcprtd.lib(MSVCP100D.dll):fatalerrorLNK1112:模块机器类型“X86”与目标机器类型“x64”冲突通过重命名msvcprtd.lib的win32版本和x6

c++ - 如何告诉 link.exe 使用 wmain 作为入口点。 LNK2019 : unresolved external symbol main referenced in function __tmainCRTStartup

我有一个通过visualstudio构建和链接的项目,但不是通过我们的构建系统。据我所知,如果定义了UNICODE,tchar.h包含一个将_tmain转换为wmain的宏。我检查了预处理器输出,确实_tmain已被wmain替换。包含wmain的文件随后编译得很好,但链接器提示main未定义。LNK2019:函数__tmainCRTStartup中引用的未解析外部符号mainwmain是否被我没有正确包含的另一组宏转换为main(由于缺少-D选项等),或者link.exe是否有一个指定入口点的特殊标志。谢谢。手动指定/entry:mainCRTStartup修复了它。编辑:我刚刚检查

windows - 在 server core 2019ltsc 容器镜像中添加字体

我们有一个应用程序(GrapeCityActiveReports)生成pdf报告,该报告在基于下图构建的容器内运行:microsoft/dotnet-framework:4.7.2-sdk此图像基于2019ltsc版本,这就是问题所在。生成pdf的应用程序正在(尝试)为这些报告使用Arial字体,但在Windows字体目录中找不到。根据此Microsoft博客(在“容器改进”部分下),2019ltsc版本删除了除Arial外的所有字体,并且它显然阻止了安装其他字体。https://blogs.windows.com/windowsexperience/2018/05/29/announ

windows - WOW64 问题(.lnk 快捷方式)

我使用的是Windows7(x64)和Delphi2010。我正在编写一个组件来模拟开始菜单。但是,我遇到了以下问题:如果我尝试使用ShellExecute打开快捷方式(.lnk文件),只要%ProgramFiles%是快捷方式目标路径的一部分(它然后将查看C:\ProgramFiles(x86)文件夹而不是C:\ProgramFiles);如果%ProgramFiles%是图标文件路径的一部分,ShGetFileInfo无法在系统图像列表中提取正确的图标索引(与上述相同的问题).是否有任何解决上述问题的方法,或者我是否必须等待native64位Delphi可用才能使它起作用?