我有一个由用C++编写的不同模块组成的应用程序。
其中一个模块用于处理SunGrid Engine上的分布式任务。它使用DRMAA API来提交和监控网格作业。如果客户端不支持网格,应使用本地机器
API libdrmaa.so的共享对象在编译时链接并在运行时加载。
如果使用我的应用程序的客户端具有此“.so”,则一切正常,但如果客户端没有该应用程序, 应用程序将退出未能加载共享库。
为了避免这种情况,我使用dlsym()和dlopen()函数指针取代了API调用。 现在我可以使用本地机器而不是网格,如果对dlopen的调用不成功并且我的目标已实现。
现在的问题是,应用程序现在可以成功运行小型测试用例,但使用较大的测试用例时,它会引发段错误,而使用动态加载的相同代码正常工作。使用C动态加载例程的问题
我在使用dlsym()和dlopen()时丢失了什么?
有没有其他方法可以达到同样的目标?
任何帮助,将不胜感激。
感谢名单,
是啊..我同意你..但我应该如何去纠正这个??整个代码很笨重:(.. – sud03r 2009-07-03 15:49:27