我正在处理一些大型非托管库的包装。几乎所有的函数都可以在内部调用一些错误处理程序。默认错误处理程序向控制台写入错误并调用abort()函数。这种行为对于托管库来说是不可取的,所以我想用我自己的缺省错误处理程序替换它,只会抛出一些异常并让程序在处理此异常之后继续正常执行。必须在调用任何包装函数之前更改错误处理程序。
包装库是用托管的C++编写的,具有到包装库的静态链接,所以没有像“具有数百个dll导入的类型”那样存在。我也找不到一个由wrapper库中的所有东西使用的类型。所以我不能通过在一个单一类型中定义静态构造函数来解决这个问题,这将执行我需要的代码。在程序集上执行代码加载
我目前看到解决该问题的方法有两种:
这样定义Library.Initialize()必须由客户端调用之前的一次他的代码将使用包装图书馆的任何部分一些静态方法。
找到每个顶级函数使用的类型的最小子集(我认为这个子集的大小将类似25-50类型),并添加静态构造函数调用Library.Initialize(这将是在这种情况下内部)到这些类型的每一个。
我读过this和this问题,但他们并没有帮助我。有没有解决这个问题的适当方法?也许有一些很好的黑客可用?