Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在另一个library2中使用的library1中编辑类会导致访问冲突异常_C++_Exception_Dll_Dllexport - Fatal编程技术网

C++ 在另一个library2中使用的library1中编辑类会导致访问冲突异常

C++ 在另一个library2中使用的library1中编辑类会导致访问冲突异常,c++,exception,dll,dllexport,C++,Exception,Dll,Dllexport,我有一个dll库1,其中有许多类这些类在dll库2中使用,我没有访问库2的代码,我无法重新编译它,我想在不影响库2的工作的情况下为库1中的类添加一些功能,我遇到了一些问题 我做了什么??(1) 我在库1中的类中添加了另一个构造函数,库2保持正常工作,(2)我在库1中的类中添加了一个公共bool变量,库2抛出一个异常-访问冲突读取-!!我没有删除任何东西,只是添加了新变量,导致另一个库停止工作并引发访问冲突读取异常 这是正常的还是这个问题的解决方案是什么?我通过将新变量放在类声明的末尾解决了这个问

我有一个dll库1,其中有许多类这些类在dll库2中使用,我没有访问库2的代码,我无法重新编译它,我想在不影响库2的工作的情况下为库1中的类添加一些功能,我遇到了一些问题

我做了什么??(1) 我在库1中的类中添加了另一个构造函数,库2保持正常工作,(2)我在库1中的类中添加了一个公共bool变量,库2抛出一个异常-访问冲突读取-!!我没有删除任何东西,只是添加了新变量,导致另一个库停止工作并引发访问冲突读取异常


这是正常的还是这个问题的解决方案是什么?

我通过将新变量放在类声明的末尾解决了这个问题

class A // before editing
{
public:
    int a;
    bool b;
};

//i was doing thia
class A // when problem was caused
{
public:
    bool q;//my new item
    int a;
    bool b;
};

//what solved the problem

class A // after the problem  was solved
{
public:
    int a;
    bool b;
    bool q;//my new item
};

但我对此没有真正的解释。

这不是一个真正的解决方案。你必须重新编译
library2
,没有办法。对于未来,您可以考虑使用PIML成语最小化编译依赖关系。我知道这不是解决方案,但如果我有大约90个项目,那么我能做些什么呢?其中很多都依赖于该库,我的任务是进行这种修改并保持其他库的工作???顺便说一句,这是我第一次读到。但在这种情况下,这不是一个解决方案。但是,在将变量放在members声明的末尾之后,您有没有解释为什么它会起作用?我真的很想知道!!您的客户端库认为
类A
具有一定的大小,并且它只包含一个
int
,后跟一个
bool
。您的第二个版本与之匹配,只是客户端对第二个
bool
一无所知。类的大小仍然不同,在某些时候代码将运行到未定义的行为中。因此,这看起来是一个解决方案,但事实并非如此。