- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从事一个项目,其中有我可以编辑的源文件(.cpp、.h)和我不能编辑的目标文件(.obj)。我正在尝试将一个变量添加到源文件的类之一。它可以很好地编译和链接,但会在应用程序生命周期的某处导致随机崩溃。
我的问题是:有没有什么方法可以将成员变量添加到驻留在源文件中的类中,该类被链接到 OBJ 文件并由 OBJ 文件使用(无需重新编译 OBJ 文件)?
我知道我完全有可能误解了实际问题是什么,但这是我最好的猜测,因为我以前遇到过它,希望能回答我的问题。当然,除非您完全确定我的问题是其他问题。
这是一些背景:我正在处理另一个程序员的代码。他们已经设置了代码库中随处使用的多个单例。我正在尝试使用消息将一组特定的系统与所有单例分离,以便我可以更轻松地管理、修改和构建系统。将变量添加到其中一个单例后,它每次都会在同一个地方崩溃应用程序(我看不到它的源代码)。根据我添加的变量类型,崩溃将发生在应用程序中的某个不同点。我已经考虑到代码库中某处存在缓冲区溢出,但我没有时间处理该问题,而是先查看其他更具体的可能原因。
当然,“简单”的解决方案是让分发 OBJ 文件的程序员在添加我的新变量的情况下重新编译它们(他们以前不得不这样做),但我仍在努力解耦系统的方法,以及执行和撤消的周转时间,因为其他程序员的工作时间与我的计划相反。
如果相关,我会发布一些源代码或调试调用堆栈,但事实并非如此。问题如前所述。我在一个类中添加了一个变量。它现在使程序在一些随机 OBJ 文件的例程中崩溃。
感谢您的宝贵时间。
最佳答案
如果我没看错你的问题(你在最终的可执行文件中有两个相同类型的不同版本),你所要求的将在运行时导致未定义的行为。
假设您有一个名为“foo”的结构,它有两个 int 成员,并且由您的程序员同事编译到一个单独的目标文件中。然后你获取“foo”,向它添加一个 int 成员,然后将它编译为另一个 obj 文件。您现在链接创建可执行文件的两个 obj 文件。
您有两个问题——程序运行期间的 sizeof(foo) 是多少?它等于 foo 的较小版本还是较大版本?其次,链接器很可能为较小版本保留空间——当程序试图访问您添加到较大版本 foo 的 int 时会发生什么?将发生内存“重读”或覆盖。
您应该与您的程序员同事协调您的工作。您使用源版本控制系统吗?如果是这样,这通常是解决这些问题的地方。
关于c++ - 修改 OBJ 文件链接到的源文件会使应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20849954/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!