加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C代码中使用C结构?

发布时间:2020-12-16 07:09:31 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个应该在C程序中使用C库(LIS库)的程序.结构对象的创建/初始化似乎存在问题. 当我在维基百科页面上运行示例程序时:http://en.wikipedia.org/wiki/Lis_%28linear_algebra_library%29它像魅力一样运行,但当然它被编译为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,以便我可以像维基百科页面上的示例代码一样使用它?

先感谢您!

回答亚当和罗斯里奇:
我在Windows 7 64位上使用visual studio 2013. Lis库的手册指出它与Visual Studio 2008,2010和2012编译器以及gcc 3.4和4.4以及一些IBM,Intel和PGI C编译器兼容,我希望Visual Studio 2013不会出现问题.

此外,在这段代码中,如果我取出’extern C’块,并包含’stdio.h’而不是iostream,它运行没有问题(所以我想这意味着它使用了C编译器?).我还包括iostream,访问冲突开始.

解决方法

你包括

lis_config.h

lis.h

这本身就是一个错误(你必须先包括它).此外,如果您触及lis_config中的任何内容,则必须重建整个库(使用项目的大多数相同编译器标志,例如“-msee2”,如果您使用SSE2).在重建之前只是交换标头只是为了看看是否足够..

还有一些话:一个库可以很容易地检测出包含在错误顺序中的标题,为lis开发人员制作一张票.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读