|
|
1
3
通常不能混合不兼容ABI的不同C++编译器。因此,例如,不能从用MSVC编译的库中抛出异常并尝试捕获 它与海湾合作委员会。 但除此之外,您通常没有问题。 小音符: MSVC有几个不兼容的异常模型,不要混淆它们。 |
|
|
2
3
对于gcc,至少有一种情况下,从gcc生成的共享库捕获异常是有问题的,即当忘记导出
我不确定Windows DLL是否有类似的问题,但似乎有可能。 |
|
|
3
1
当涉及到DLL和异常时,一般都会理解: 不要在头中内联实现异常类。您将得到重复的vtables和rtti信息,从而导致使用代码中未捕获异常(由于重复,该异常被认为是另一种类型)。 细节: http://marcmutz.wordpress.com/2010/08/04/fun-with-exceptions/ |
|
|
4
0
您给出的示例应该可以很好地工作,但是对于DLL,如果您碰巧抛出了一个堆分配的异常,那么如果DLL的使用者试图释放堆分配的异常,您将崩溃。 |