- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
各位业内资深人士,
我是一名大三学生,开始了我的第一个暑期编程实习,而且我已经不知所措了。我工作的公司从另一家公司购买了一个巨大的应用程序,该公司自 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)
我的理解是,当使用不同的 runtime libraries 编译解决方案中的不同项目时,经常会发生这种情况。 .我的解决方案中有 6 个项目。其中 4 个设置为使用多线程调试 DLL 运行库 (/MDd) 进行编译,其中一个设置为使用多线程调试库 (/MTd) 进行编译,其中一个设置为使用多线程 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]
经过一番挖掘,我发现它已经告诉了我需要做什么。我继续将 Project Properties->Configuration Properties->General 下的“Use of MFC”选项更改为“Use MFC in a Shared DLL”。此时,我开始收到许多 Unresolved external 错误,例如:
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) : error LNK2001: unresolved external symbol "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)
阅读 LNK2001 上的 MSDN 页面后和 LNK2019 ,我意识到我不知道发生了什么。这些不是他们在学校教我们如何处理的问题。我知道我的数据结构,仅此而已。我如何最终成为现在的位置已经超出了我的范围!
根据我有限的知识,这些模块的各种调试和发布版本似乎都纠缠在预处理器指令和#includes 的网络中。在整个解决方案中,几乎每个头文件和源文件中都有许多嵌套的 #ifdef 检查和 #define 语句,用于环境变量、文件名、宏等。通过对我的编译器设置进行微小的更改,我似乎将程序的大部分重定向到具有非常不同的函数定义的不同库。这是我对正在发生的事情的模糊概念性理解。
我觉得在我有机会解决这些编译器错误之前,我需要更好地理解这段代码的工作原理。为此,我一直在尝试逐行逐行浏览许多文件,以查看它们的引导位置、作用域内的对象和变量等等。不幸的是,这并没有让我走得很远,因为对外部函数的每次调用都是模棱两可的,而且我无法通过预处理器的困惑了解应该调用任何给定函数的哪个版本。
我四处寻找神奇的解决方案来绘制程序并尝试理解它。我试过一个叫 Doxygen ,但要么我不知道如何正确使用它,要么和我一样被预处理器的东西弄糊涂了。
我的问题是这样的:
我剩下的选择是什么?
在这一点上,这是一个折腾:
a.) 转专业
b.) 从桥上跳下来
这些选择都不会帮助我更好地理解这个代码库并编译它。有人有更好的想法吗?类似的经历?圣人智慧分享?
万分感谢,
-亚历克斯
最佳答案
看来您正在使用 CodeProject 中的 CResizableSheet 和 CResizeablePage。如果您使用的是从该页面编译的静态库,您可以尝试下载源代码并使用匹配的/MDd 设置编译它,并使用它在项目的链接器输入部分中输出的 .lib。我还建议进行一次清理(转到构建-> 批处理构建-> 全选,然后单击清理),然后再次尝试构建以确保一切都是最新的。
关于c++ - Unresolved external 噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478887/
我知道这个问题已经被问过了,但我没有找到任何方法来阅读现有代码来找到解决我的问题的方法。我的一些应用程序用户对不同类型的 UnsatifiedLinkError 有经验: Caused by: jav
好的,我完成了。我不明白为什么会出现此错误: rake features 这不可能是我无法连接到 mysql 原因: rake db:migrate 完美运行。 我一直有这个错误: rake feat
我有一个容器 DIV position:relative。容纳一切然后一左一栏,一右一栏,经典布局。它们都绝对定位在这个相对#Main 中。我希望权利是流动的,所以我说 top: 0px;左:280p
嗨,你猜怎么着,我有一个 IE 定位问题!这是在 8 中,所以天知道其他版本中发生了什么(稍后检查) 两个盒子都调用同一个类,为什么IE这么难? 这是它的外观: 这是它的样子: CSS:(为了便于阅读
我无法理解正则表达式,感谢任何帮助! 我有很多字符串数据,可能包含也可能不包含字符串“1/10”或“2/10”或“2/18”等。基本上,分子和分母都可以变化。让事情变得更复杂的是,一些数据输入运算符(
我正在使用 Ooura 的 FFT 分析一些白噪声(持续时间为 75368 smp,有 44100 个噪声样本)。我得到的结果很奇怪:即使除以样本数,我的结果也小于 1.0,这是怎么回事? 我正在
前一周我一直在尝试让 WCF 的安全形式在 Azure 上运行,但一切都无济于事!我的用例非常简单。我想调用云中的 WCF 端点并传递消息以排队等待辅助角色。除此之外,我想限制对预先授权的用户的访问,
我正在尝试实现 Twitter 的自定义登录 View (我不想要那个 UIWebView)。我已经下载了很多类(class),但到目前为止我对此感到噩梦。现在我正在尝试让 Twitter + oAu
很高兴找到这样一个有用的网站,里面有天才成员(member)。一段时间以来,我一直在尝试寻找解决此 SQLITE 问题的方法。谷歌没有帮助我,除了找到这个网站。 SQL 查询在同一数据库的 MSAcc
我有一个基于 Spring Framework 的应用程序,我们之前已成功部署它并正在添加新功能。我们的开发机器是 JDK6 和 Tomcat7。我们正在使用 Spring 3.1.0.M2。旧代码使
各位业内资深人士, 我是一名大三学生,开始了我的第一个暑期编程实习,而且我已经不知所措了。我工作的公司从另一家公司购买了一个巨大的应用程序,该公司自 90 年代初以来一直在缓慢地扩展和修改它。该解决方
我知道你在想什么,另一个 netbeans xdebug 帖子? 好吧,我已经尝试了我在其他帖子中看到的所有内容,但似乎没有任何效果。这是我的设置: 操作系统:Ubuntu 9.10 PHP:5.2.
好的,所以我尝试在该程序的对话中实现一个计时器,该计时器在进入下一个对话之前暂停一秒钟。当我尝试这个时,java会抛出很多错误,例如:非法的表达式开始,;预期,.class 预期,并在解析时到达文件末
我在使用 Spring Jdbc 从数据库检索数据时遇到问题。这是我的问题: 我的 DAO 上有一个 getData() 方法,该方法应该从某些 select 语句的结果中返回一行。再次调用时,get
我的主类是一个包含图形组件的窗口,其中包括 JTable。 我创建了一个公共(public)类ContextMenu,它是JPopupMenu的自定义实现,并包含多个JMenuItem。 我已在 JT
The best way to illustrate this question is with...a Fiddle! 在您访问 fiddle 之前,请注意最灰色的元素后面有文本,该文本位于具有边框
我似乎无法处理收到的 CSV。这是银行生成的文件,看起来像这样: "000,""PLN"",""XYZ"",""2011-08-31"",""2011-08-31"",""0,00""" 1,""E"
一次提交 2447 个文件时,我完全陷入了 SVN 错误。我在 Windows 7 64 位上使用 TortoiseSVN(最新版本)。 事实是,一些文件是在 Mac 上创建的,而另一些文件是在 PC
我将从我要完成的事情开始。 我有一个 ListFragment,与 LoaderCallbacks 关联以从数据库检索数据。使用 AsyncTask 下载数据,并插入到数据库中。当用户到达列表底部时,
当我在探查器中运行以下代码时,我得到一个 char[] 和 byte[],它们会不断累积,直到程序因 Java 堆内存不足异常而崩溃。有人能告诉我为什么吗?也许我在做一些根本性的错误。 package
我是一名优秀的程序员,十分优秀!