我需要对C ++静态链接做一些基本的澄清。我有一个名为data_client.lib的文件。库文件a.exe,b.exe和c.exe有三个独立的使用者。有一个名为data_server.exe的服务,其中data_client.lib是接口。实际上,我向data_server.exe和data_client.lib的相应接口添加了另一个函数。由于只是a.exe需要额外的功能,我只建立一个。我发送了data_server.exe,data_client.exe和a.exe作为补丁。现在,b.exe和c.exe随机/不一致地崩溃了

  

mfc42u!CException ::`RTTI Complete   对象定位器'+ 0x10

有意义吗?如果我还构建b.exe和c.exe,则不会发生崩溃。这是它的工作方式吗?

有帮助吗?

解决方案

  

实际上,我向data_server.exe和data_client.lib的相应接口添加了另一个函数。

从这个确切地添加到您的图书馆的内容中有点不清楚。但是,如果它是一个新的方法或方法添加到类(而不仅仅是一些新的独立函数),重新编译所有内容将很有可能解决您的问题。 vtable 可能会或可能不会因您的更改而被打破。

你的崩溃也可能与此完全无关,还有其他一些问题正在发生......但是从你的描述来看,我的钱在vtable问题上。如果是我,我会重新编译b.exe和c.exe并再次测试,然后再调查其他问题。

其他提示

也许您没有明确的依赖关系,但是您的某些项目标题会使用或隐式将信息放入您的库中。

我不知道错误,但您的应用程序b.exe和c.exe正在使用较旧版本的绑定库与较新版本的data_server.exe进行通信。如果添加了某个函数,某些v_table索引可能会关闭。你肯定要重建所有的库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top