vs2008中,很急很急!!error LNK2001: 无法解析的外部符号 "int i" (?i@@3HA)咋解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2008中,很急很急!!error LNK2001: 无法解析的外部符号 "int i" (?i@@3HA)咋解决相关的知识,希望对你有一定的参考价值。

一个约瑟夫环问题
//Jgame.h
#ifndef JGAME_H
#define JGAME_H

#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define Length sizeof(struct Joe)

struct Joe

int num;
int key;
struct Joe *next;
;
extern int n;
extern int i;

struct Joe *create(int N);
struct Joe *quit(struct Joe *head,int m,int N);

#endif

//jgame.cpp
#include "Jgame.h"

struct Joe *create(int N)//N是开始围坐一圈的人数

struct Joe *head;
struct Joe *p1,*p2;
int n;
p1=p2=(struct Joe *)malloc(Length);
printf("输入第一个人持有的密码:");
scanf("%d",&p1->key);
p1->num=1;
head=NULL;
while(p1->num<=N)

n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Joe *)malloc(Length);
if(n==N)

printf("输入-100结束输入密码");

else

printf("输入地%d个人持有的密码:",n+1);

scanf("%d",&p1->key);
p1->num=n+1;

p2->next=head;//首尾相连
return (head);


struct Joe *quit(struct Joe *head,int m,int N)

struct Joe *p,*q;
int j=0,k=0;
q=p=head;
i=i+1;
if(p->next==head)return (p);
if(m==1)

while(k<N-1)

p=p->next;
k=k+1;

printf("(%d) 第%d个人退出游戏。\n",i,q->num);
m=q->key;
head=q->next;
free(q);

else

while(j<m-2)

p=p->next;
j=j+1;

q=p->next;
p->next=q->next;
printf("(%d) 第%d个人退出游戏。\n",i,q->num);
m=q->key;
head=p->next;
free(q);

N=N-1;
quit(head,m,N);


//main.cpp
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include"Jgame.h"

int main()

struct Joe *head;
struct Joe *p;
n=0;
int m,N;//m是报数的初值,在本试验中为20;N是参与的人数,本试验中为7;
printf("输入参加游戏的人数:");
scanf("%d",&N);
printf("输入报数的初值:");
scanf("%d",&m);
printf("游戏过程如下\n");
head=create(N);
p=quit(head,m,N);
system("pause");
return 0;


1>------ 已启动生成: 项目: Joeph, 配置: Debug Win32 ------
1>正在链接...
1>Jgame.obj : error LNK2001: 无法解析的外部符号 "int i" (?i@@3HA)
1>main.obj : error LNK2001: 无法解析的外部符号 "int n" (?n@@3HA)
1>C:\Users\sony\Documents\Visual Studio 2008\Projects\Joeph\Debug\Joeph.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>生成日志保存在“file://c:\Users\sony\Documents\Visual Studio 2008\Projects\Joeph\Joeph\Debug\BuildLog.htm”
1>Joeph - 3 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
咋办咋办,很急
不加extern是这个错误
main.obj : error LNK2005: "int n" (?n@@3HA) 已经在 Jgame.obj 中定义
1>main.obj : error LNK2005: "int i" (?i@@3HA) 已经在 Jgame.obj 中定义
1>C:\Users\sony\Documents\Visual Studio 2008\Projects\Joeph\Debug\Joeph.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

参考技术A extern int n;
extern int i;
这只是申明了这两个变量,还没有定义这两个变量。
可以在main()前加上:
int n;
int i;
参考技术B 晕。前面加extern干嘛,加这个表示变量是在另外的文件里定义的。当然找不到

jquery无刷新取值问题~~~~,很急~~~在线等!!

我用Struts2和Jquery做个小项目,在Action中进行查询数据,然后将数据保存在list中,ActionContext.getContext().put("list", list);然后返回页面,请问在页面上,用jquery怎么将list循环出来,将数据也一条一条的循环出来?

参考技术A 有两种方式
第一种是在action中将你的list转成json字符串:
Gson gson = new Gson();
String result = gson.toJson(list);
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json; charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
然后在页面中将返回值list赋给object对象
第二种就是将list放到session中:
ActionContext context = ActionContext.getContext();
context.getSession().put("list", list);
然后在页面用struts的迭代标签<s:iterator value="#request.list" id="provider">
将其一条条取出,并用
<s:property value="#provider.providerName"/>来显示
参考技术B 用AJAX不能这样吧?具体怎么实施我告诉你思路了,祝你尽快能完成这个功能~~本回答被提问者采纳

以上是关于vs2008中,很急很急!!error LNK2001: 无法解析的外部符号 "int i" (?i@@3HA)咋解决的主要内容,如果未能解决你的问题,请参考以下文章

vs调试没问题,iis发布浏览分析其错误,未能加载类型?很急,求大神。

【很急】VS2005项目属性在哪里啊??

急,很急,非常急!!在vs窗体中用DataGridView控件时如何绑定数据库!!!

设计小学生四则运算测试程序,要求随机产生10题四则运算题,答完后给出得分。用C语言做,有人会吗??很急

(asp.net)求一Sqlserver存储过程和网页代码,根据不同参数执行不同的查询语句。

CAD错误Error handler re-entered.Exiting now!怎么办!很急!!