如何在C代码中使用C结构?
我正在尝试编写一个应该在C程序中使用C库(LIS库)的程序.结构对象的创建/初始化似乎存在问题.
当我在维基百科页面上运行示例程序时:http://en.wikipedia.org/wiki/Lis_%28linear_algebra_library%29它像魅力一样运行,但当然它被编译为C程序. 在我的C代码中,我按如下方式执行: #include "stdafx.h" #include <iostream> extern "C" { #include "lis.h" #include "lis_config.h" LIS_MATRIX A; } using namespace std; int main(LIS_INT argc,char* argv[]) { lis_initialize(&argc,&argv); lis_matrix_create(LIS_COMM_WORLD,&A); getchar(); return 0; } 当我运行此代码时,它在行lis_matrix_create中给出了访问冲突.好像A有一个内存地址,它的数据成员(LIS_MATRIX被定义为Lis.h中的结构)尚未初始化,因此它们的地址为NULL. 你能否告诉我如何创建LIS_MATRIX,以便我可以像维基百科页面上的示例代码一样使用它? 先感谢您! 回答亚当和罗斯里奇: 此外,在这段代码中,如果我取出’extern C’块,并包含’stdio.h’而不是iostream,它运行没有问题(所以我想这意味着它使用了C编译器?).我还包括iostream,访问冲突开始. 解决方法
你包括
lis_config.h 后 lis.h 这本身就是一个错误(你必须先包括它).此外,如果您触及lis_config中的任何内容,则必须重建整个库(使用项目的大多数相同编译器标志,例如“-msee2”,如果您使用SSE2).在重建之前只是交换标头只是为了看看是否足够.. 还有一些话:一个库可以很容易地检测出包含在错误顺序中的标题,为lis开发人员制作一张票. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |