编译时候生成了obj文件,但是这个obj里面有的函数链接不到?请给予指导

httpaspjspphp 2008-07-09 05:05:35
有一个cpp文件的名字叫 ChinConv.cpp
在这个函数里面定义了10个函数
在编译以后已经生成了ChinConv.obj文件

但是在使用到 ChinConv.cpp 里面的函数时候
提示说是 无法解析的外部符号 "void __cdecl InitT9(void)" (?InitT9@@YAXXZ) ,该符号在函数 _WinMain@16 中被引用



如果要是在工程--属性---输入===链接里面 指定ChinConv.obj的话
又错误提示
说是这些函数重复定义


那位大侠遇到过这类的情况
请给予指导
谢谢
...全文
376 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
httpaspjspphp 2008-07-11
  • 打赏
  • 举报
回复
问题解决
谢谢各位
尤其是毛毛熊
maomaoxiong 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 maomaoxiong 的回复:]
jtkgs@126.com

帮忙顶!
[/Quote]
调试通过的工程已发,请查收。
将MyTestWin32.Cpp中下面语句中的extern去掉就好了
extern T9CCFieldInfo CCFieldInfo;
maomaoxiong 2008-07-11
  • 打赏
  • 举报
回复
参考
http://blog.csdn.net/wfwd/archive/2006/05/30/763734.aspx
httpaspjspphp 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 cnzdgs 的回复:]
wasay@yeah.net
[/Quote]

邮件已经发出
谢谢帮忙
httpaspjspphp 2008-07-11
  • 打赏
  • 举报
回复
邮件已经发出
谢谢
alan001 2008-07-11
  • 打赏
  • 举报
回复
UP
microsoftzxw 2008-07-11
  • 打赏
  • 举报
回复
这个问题我也遇到过,我现在加了一个群,这个群人气较好,也的确有高手,不但可以交流问题,而且还可以接项目赚钱,QQ群号是:陆.肆.柒.玖.捌.柒.贰.零,不要说我做广告,看看便知,如需要的话加入试试,如果你发现好的交流群也别忘了告诉我啊!呵呵!
jyh_baoding 2008-07-11
  • 打赏
  • 举报
回复
C和Cpp混合编译引起的可能性比较大
vcPlayer 2008-07-11
  • 打赏
  • 举报
回复
如果是源文件编译,看看相关的源文件加入工程没有?

如果是库编译,则要加入库 #pragma comment(lib, "***.lib")
pomelowu 2008-07-10
  • 打赏
  • 举报
回复
這是在c文件中定義的,然後你在其他的c文件中使用?
httpaspjspphp 2008-07-10
  • 打赏
  • 举报
回复
up
maomaoxiong 2008-07-10
  • 打赏
  • 举报
回复
不知道楼主的struct T9CCFieldInfo_s CCFieldInfo在C的头文件中用extern声明了没有?

C++中调用C模块最好采用下面的形式

#ifdef __cplusplus
extern "C"
{
#endif

// C头文件

#ifdef __cplusplus
}
#endif

这样当在C中模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明后,在C++中就可以直接使用了。下面是个示例:

/* c语言头文件:cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern int add(int x,int y);
#endif
/* c语言实现文件:cExample.c */
#include "cExample.h"
int add( int x, int y )
{
return x + y;
}
// c++实现文件,调用add:cppFile.cpp
extern "C"
{
#include "cExample.h"
}
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}

httpaspjspphp 2008-07-10
  • 打赏
  • 举报
回复
邮件已发
谢谢
如果调试过了
请回信指导
cnzdgs 2008-07-10
  • 打赏
  • 举报
回复
wasay@yeah.net
maomaoxiong 2008-07-10
  • 打赏
  • 举报
回复
jtkgs@126.com

帮忙顶!
httpaspjspphp 2008-07-10
  • 打赏
  • 举报
回复
现在问题没有解决
httpaspjspphp 2008-07-10
  • 打赏
  • 举报
回复
up
sanshao27 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pomelowu 的回复:]
呵呵,继续补全
#ifdef __cplusplus
extern "C" {
#endif

#include ……

#ifdef __cplusplus
}
#endif
[/Quote]
httpaspjspphp 2008-07-10
  • 打赏
  • 举报
回复
这个是一个 T9 sdk
T9 开发商提供了一个obj和头文件,开发商提供的obj和头文件都是标准c


现在要使用的是头文件里面的数据结构和函数
也就是说

在cpp中使用这个开发商提供的obj和头文件时候遇到的问题
httpaspjspphp 2008-07-09
  • 打赏
  • 举报
回复

这些变量在一个c文件里面
定义顺序如下:


#if defined(__cplusplus)
extern "C" {
#endif


typedef struct T9CCFieldInfo_s T9CCFieldInfo;

typedef T9STATUS (T9FARCALL *T9CCLoadLdb_f)(T9CCFieldInfo*, T9ChineseData T9FARDATA *);


struct T9CCFieldInfo_s {
T9FieldInfo G; /* Generic data. */
void *pOEMPrivate; /* pointer for OEM use for callbacks */

T9CCLoadLdb_f T9CCLoadLdb;
};

#if defined(__cplusplus)
}
#endif



各位要是感兴趣的话留下信箱
我可以把代码发给你

是T9输入法的内容

谢谢


加载更多回复(14)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧