蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


build Test.exe时出错,请教!!!

我自己写了一些串的函数在文件(串的堆实现.c)中,编译通过,有写了如下一段(仅测试其中的几个函数):[code]
#include <stdio.h>;
#include <stdlib.h>;
#include "c:\串的堆实现.c"
main(){
  char chars1[]="HelloWorld!";
  char chars2[]="computer";
  HString *S;  //HString是自定义的串类型
  HString T;
  StrAssing(S,chars1);  //由字符常量chars1生成串S
  StrPrint(*S);              //打印S
  StringCopy(&T,*S);   //由串S生成新串T
  StrPrint(T);
  }
[/code]
单独编译此程序也通过,在build该程序时有如下错误:
--------------------Configuration: Text1 - Win32 Debug--------------------
Linking...
串的堆实现.obj : error LNK2005: _StrAssing already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrCopy already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrEmpty already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrCompare already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrLength already defined in Text1.obj
串的堆实现.obj : error LNK2005: _ClearString already defined in Text1.obj
串的堆实现.obj : error LNK2005: _Concat already defined in Text1.obj
串的堆实现.obj : error LNK2005: _Substring already defined in Text1.obj
串的堆实现.obj : error LNK2005: _Index already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrDelete already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrInsert already defined in Text1.obj
串的堆实现.obj : error LNK2005: _Replace already defined in Text1.obj
串的堆实现.obj : error LNK2005: _StrPrint already defined in Text1.obj
Text1.obj : error LNK2001: unresolved external symbol _StringCopy
Debug/Text1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Text1.exe - 15 error(s), 0 warning(s)

请指教!!!是什么原因???以上是在vc6中得到的!!!

build Test.exe时出错,请教!!!

I 服了 U!
文件名最好不要用中文,
还有啊,include 必须保证只能 include 一遍,防止重复定义,
所以通常的做法是不 include .c 文件。

build Test.exe时出错,请教!!!

不include .c文件,那我怎么才能连上这个文件用其中的函数呢?

build Test.exe时出错,请教!!!

建一 project, 把 c 文件添加进去。

build Test.exe时出错,请教!!!

但如果我在象TC这样的编译器中有该怎么办呢?

build Test.exe时出错,请教!!!

我把c文件加到了project中,有出现了如下错误:
C:\Text1.c(4) : error C2065: 'HString' : undeclared identifier
C:\Text1.c(4) : error C2065: 'T' : undeclared identifier
C:\Text1.c(4) : error C2065: 'S' : undeclared identifier
C:\Text1.c(5) : warning C4013: 'StrAssing' undefined; assuming extern returning int
C:\Text1.c(6) : warning C4013: 'StrPrint' undefined; assuming extern returning int
C:\Text1.c(6) : error C2100: illegal indirection
C:\Text1.c(7) : warning C4013: 'StrCopy' undefined; assuming extern returning int
C:\Text1.c(8) : error C2100: illegal indirection
Error executing cl.exe.

Text1.exe - 5 error(s), 3 warning(s)

1.我在c文件中有HString结构的定义,函数也都有返回类型的定义,这些错是什么原因呢?请指教!
2.如果在linux中出现了这类问题怎么办?

build Test.exe时出错,请教!!!

写个.h头文件声明一下你的函数、变量
奇怪你是怎么写出这些程序来的?从来都是在一个文件中完成所有的事情么?
如果你是天才,那就显得我很愚蠢。。。不然,还是找本基本的书看看吧

build Test.exe时出错,请教!!!

从来都是在一个文件中完成所有的事情么?
是的!

build Test.exe时出错,请教!!!

我现在重新改了一下,建有三个文件:
1.一个头文件t.h(放入了所有的#include语句和串的结构定义)。
2.一个源文件string.c(放的是所有串的操作的函数),其中有#include "t.h"。
3.又一个源文件Test.c(对2中的操作函数的测试程序),其中有#include "string.c"。

我先编译string.c通过,再编译Test.c就又出现了错误:
string.obj : error LNK2005: _StrAssing already defined in Text1.obj
string.obj : error LNK2005: _StrCopy already defined in Text1.obj
string.obj : error LNK2005: _StrEmpty already defined in Text1.obj
string.obj : error LNK2005: _StrCompare already defined in Text1.obj
string.obj : error LNK2005: _StrLength already defined in Text1.obj
string.obj : error LNK2005: _ClearString already defined in Text1.obj
string.obj : error LNK2005: _Concat already defined in Text1.obj
string.obj : error LNK2005: _Substring already defined in Text1.obj
string.obj : error LNK2005: _Index already defined in Text1.obj
string.obj : error LNK2005: _StrDelete already defined in Text1.obj
string.obj : error LNK2005: _StrInsert already defined in Text1.obj
string.obj : error LNK2005: _Replace already defined in Text1.obj
string.obj : error LNK2005: _StrPrint already defined in Text1.obj

请教我如何解决???!!!

build Test.exe时出错,请教!!!

重定义了..你看英文解释就明白了.

build Test.exe时出错,请教!!!

哈哈哈 :lol:  :lol:  :lol:

build Test.exe时出错,请教!!!

我在Test.c中没有这些函数的定义,只是用到这些函数,怎么会提示在Test中重复定义呢???

build Test.exe时出错,请教!!!

build Test.exe时出错,请教!!!

基本的书我也翻了,可都是谈语法的,没有编译方面的,就是有,也是一些小程序所有东西都写在一个文件里不需要连接的,我只要请大家教我,先谢谢了!!!

build Test.exe时出错,请教!!!

帮一下我,我的问题还没有解决!!!



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com