未解决的外部噩梦

2023-11-21

各位行业资深人士,大家好:

我是一名大三学生,即将开始我的第一次暑期编程实习,但我的能力已经超出了我的能力范围。我工作的公司从另一家公司购买了一个庞大的应用程序,该公司自 90 年代初以来一直在慢慢扩展和修改它。该解决方案包含超过 200,000 行代码,分布在 300 多个文件中。据称整个解决方案是按照 ANSI-C++ 标准编写的。该代码几乎完全没有文档记录,其中大部分对我来说看起来像象形文字。最终,我的工作是将这些代码移植到嵌入式 Linux 上。目前,我的工作只是在 Windows XP 上使用 Visual Studio 2008 进行编译。

今天,我遇到了如下链接器错误:

libcmtd.lib(sprintf.obj) : error LNK2005: _sprintf already defined in msvcrtd.lib(MSVCR90D.dll)

我的理解是,当解决方案中的不同项目使用不同的编译方式时,通常会发生这种情况运行时库。我的解决方案中有 6 个项目。其中 4 个设置为使用多线程调试 DLL 运行时库(/MDd)进行编译,其中 1 个设置为使用多线程调试库(/MTd)进行编译,其中 1 个设置为使用多线程 dll 运行时库 (/MD)。收到此错误消息后,我尝试的第一件事是将 /MTd 和 /MD 开关更改为 /MDd,以便所有内容都使用相同的运行时库进行编译。不幸的是,这导致了 afx.h 中出现以下错误:

fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

经过一番挖掘后,我发现它已经告诉我需要做什么。我继续将“项目属性”->“配置属性”->“常规”下的“使用 MFC”选项更改为“在共享 DLL 中使用 MFC”。此时,我开始收到数十个未解决的外部错误,例如:

dataPropertySheet.obj : error LNK2019: unresolved external symbol "public: __thiscall CResizableSheet::CResizableSheet(unsigned short const *,class CWnd *,unsigned int)" (??0CResizableSheet@@QAE@PBGPAVCWnd@@I@Z) referenced in function "public: __thiscall CdataPropertySheet::CdataPropertySheet(unsigned short const *,class CWnd *,unsigned int)" (??0CdataPropertySheet@@QAE@PBGPAVCWnd@@I@Z)

ResizableLib.lib(ResizablePage.obj) : 错误 LNK2001: 无法解析的外部符号“public: virtual int __thiscall CWnd::Create(char const *,char const *,unsigned long,struct tagRECT const &,class CWnd *,unsigned int,struct CCreateContext *)" (?Create@CWnd@@UAEHPBD0KABUtagRECT@@PAV1@IPAUCCreateContext@@@Z)


看来您正在使用 CodeProject 中的 CRessizedSheet 和 CResizeablePage。如果您使用该页面中编译的静态库,您可以尝试下载源代码并使用匹配的 /MDd 设置进行编译,并使用它在项目的链接器输入部分中输出的 .lib。我还建议进行全部清理(转到构建->批量构建->全选,然后单击清理),然后再次尝试构建以确保所有内容都是最新的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未解决的外部噩梦 的相关文章

随机推荐

  • 如何使用 Java 以编程方式强制停止 Android 应用程序?

    如何使用 Java 强制停止应用程序 我正在尝试构建一个内存清理器 可以帮助清理后台进程 我知道有一种方法可以杀死应用程序的进程 但是当您进入正在运行的列表时 即使您杀死了它 该应用程序仍然存在 我尝试过很多类似的内存清理应用程序 只有其中
  • Python 3.x 的机械化

    有什么方法可以将 Mechanize 与 Python 3 x 一起使用吗 或者有什么可以在 Python 3 x 中工作的替代品吗 我已经搜索了几个小时 但没有找到任何东西 我正在寻找如何使用 Python 登录该网站的方法 但该网站使用
  • 是否可以查看Class文件的字节码? [复制]

    这个问题在这里已经有答案了 可能的重复 有没有java类文件 字节码编辑器来编辑指令 Java源代码被编译成字节码 实际上是在类文件中 是否可以查看已编译类的字节码 如果可以的话可以编辑吗 有没有可用的 eclipse 插件 是的 您可以使
  • 单个函数的两个可变参数模板?

    在 C 11 中 单个函数是否可以有两个可变参数模板 如果没有 有没有一个技巧可以写这样的东西 template
  • 使用 AVX512 生成掩模的 BMI

    我受到这个链接的启发https www sigarch org simd instructions considered harmful 了解 AVX512 的性能 我的想法是可以使用 AVX512 掩码操作删除循环后的清理循环 这是我正在
  • 使用 AspNetSqlMembershipProvider 的站点出现“SQLExpress 数据库文件自动创建错误”,但连接字符串指向 SQL Server 2005

    我有一个ASP NET v2 0网站 不是 Web 应用程序 其根目录是公共的 但 Admin 子目录需要身份验证 有关设置的所有内容都非常通用 我使用了根 web config 中定义的连接字符串和标准AspNetSqlMembershi
  • 递增 Integer 变量不会影响引用同一对象的另一个变量

    我一直理解静态变量在被引用时共享一个实例 我想对此进行测试 但结果与我的预期不同 static Integer counter 0 static Integer test counter public static void main St
  • 算法:优化“平衡括号”

    有人向我提出了以下问题 给定字符串 中的 N 个不同的左大括号和右大括号 检查该字符串是否有匹配的大括号 如果大括号匹配则返回 true 否则返回 false 这是我想出的答案 function braceeql braces var le
  • 如何以编程方式“重新启动”Android应用程序[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中创建 注销 功能 基本上 通过注销 应用程序数据应该被清除 我想做的是注销后 应用程序应该重新启动 以便可以再次输入凭据等 我遇到的问题是 在用户单击 注销 时 应用程序已经有 3 4
  • AWS SQS FIFO - 如何一次获取超过 10 条消息?

    目前我们想要拉下一个整个 FIFO 队列 并处理内容 如果有任何问题 将消息释放回队列中 问题是 目前 AWS 只给我们 10 条消息 并且不会再给我们 10 条消息 这是在 SQS 中获取批量消息的方式 多个 10 条最大消息请求 直到我
  • 服务器推送数百万并发连接

    我正在构建一个分布式系统 该系统可能由数百万个客户端组成 这些客户端都需要保持开放 最好是 HTTP 连接以等待来自服务器 在其他地方运行 的命令 消息 命令的负载不会很高 可能是一条消息 秒 1000 个客户端 这意味着 1000 条消息
  • 什么是“结构黑客”和“类型/非类型隐藏”?

    我在参考参数 在范围内查找名称会找到该名称的所有声明 但有一个例外 称为 struct hack 或 类型 非类型隐藏 在同一范围内 名称的某些出现可能引用声明的一个class struct union enum那不是一个typedef 而
  • java中整数数组的优先级队列

    我想按数组 0 30 5 10 15 20 的第二个元素进行比较 PriorityQueue
  • Swift 3 中的 NSNotifications

    新通知目前在 Swift 3 中不起作用吗 我在做 NotificationCenter default post name DidTouchParticleView object self particle as AnyObject 在自
  • 为什么 NSManagedObjectContext 队列在主线程上执行?

    当我发送一个performBlock给我的 MOC 类型的消息NSPrivateQueueConcurrencyType 像这样 self privateManagedObjectContext performBlockAndWait if
  • 如何在Fragment内的WebView中添加“返回”功能?

    更新 解决了 问题与我的 Viewpager 有关 而不是与 WebView 有关 我正在尝试向我的应用程序添加 返回 功能WebView这是在一个Fragment 但我不知道如何 public final class TestFragme
  • 默认模型绑定器的 MVC 本地化

    我目前正在尝试找出如何本地化 MVC 生成的错误消息 让我使用默认的模型绑定器作为示例 以便我可以解释问题 假设我有一个表单 用户可以在其中输入他们的年龄 然后用户在表单中输入 十 但没有得到预期的错误 年龄必须在 18 岁至 25 岁之间
  • Spring security自定义AuthenticationException消息

    您好 我需要在 Spring 安全登录表单中添加一个新的异常 除了我想要自己的错误消息 到目前为止它显示 错误的登录 密码 之外 一切都运行良好 我已覆盖用户名密码身份验证过滤器中的默认尝试身份验证方法 Override public Au
  • 从 firestore 获取数据时使用 async forEach 循环

    我的 firestore 数据有点像这样 Support userid abcdxyz message hello 我正在使用 nodejs 来获取我的数据 我还想显示发送此消息的人的电子邮件地址和姓名 所以我正在使用以下函数 databa
  • 未解决的外部噩梦

    各位行业资深人士 大家好 我是一名大三学生 即将开始我的第一次暑期编程实习 但我的能力已经超出了我的能力范围 我工作的公司从另一家公司购买了一个庞大的应用程序 该公司自 90 年代初以来一直在慢慢扩展和修改它 该解决方案包含超过 200 0