2009-11-30 192 views
2

我需要对C++静态链接进行一些基本的说明。我有一个名为data_client.lib的文件。库文件a.exe,b.exe和c.exe有三个独立的使用者。有一个名为data_server.exe的服务,data_client.lib是其接口。实际上,我向data_server.exe和data_client.lib的相应接口添加了另一个功能。由于只有a.exe需要额外的功能,因此我只生成一个.exe文件。我发布了data_server.exe,data_client.exe和a.exe作为补丁。现在,B.EXE和c.exe随机/不一致崩溃扔静态库依赖关系

mfc42u!::了CException`RTTI完整 目标定位器“+ 0x10的

是否有意义?如果我也建立b.exe和c.exe,那么崩溃不会发生。这是它的工作方式?

回答

2

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

这是从这个有点不清楚,究竟是什么被添加到您的图书馆。但是,如果它是添加到类中的新方法或新方法(而不仅仅是一些新的独立函数),那么很有可能重新编译所有内容将解决您的问题。您的更改可能导致vtable错失或不被抛出。

这也可能是因为你的崩溃与此无关,还有一些其他问题正在发生......但从你的描述中,我的钱在一个虚拟问题上。如果是我,我会在调查其他问题之前重新编译b.exe和c.exe并再次测试。

+0

是的,新的方法被添加到现有的类。 – bdhar

2

也许你没有明确的依赖关系,但是你的一些项目头文件使用,或者隐式地把信息放到你的库中。

2

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