C++程序调用C程序中的一个方法,链接出错

linuxyf 2013-01-30 10:44:28
我在C++程序中调用C语言写的一个类库中的一个方法,我是把这个类库的源码加到C++工程中,编译时,链接出错如下: error LNK2019: unresolved external symbol "int __cdecl UnzipFileWithPassword(char const *,char const *,char const *)" (?UnzipFileWithPassword@@YAHPBD00@Z) referenced in function "unsigned long __stdcall UpgradeDeviceAuthProgram(void *)" (?UpgradeDeviceAuthProgram@@YGKPAX@Z)

不知道如何解决,高手给点儿建议。
...全文
167 10 点赞 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jimette 2013-02-01
C风格的DLL导出函数的典型方法说到底,DLL是对应C语言的动态链接技术,在输出C函数和变量时显得方便快捷 所以写DLL文件最典型的一种Case:不用C++的类而都是C风格的代码 这种情况要导出函数,有两种方式: 第一种:函数前加相应修饰符 #ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif 然后在每一个要导出的函数前面加EXPORT EXPORT标识符包括储存方式限定词__declspec(dllexport)以及在表头文件按C++模式编译时附加的「C」。因为C++编译器会将函数的名字改变,从而导致导出函数名称变化,用extern "C"就是为了防止这个。C编译器无此问题。 第二种:用def文件 LIBRARY MyDll EXPORTS Max Min 其中LIBRARY语句说明该def文件是属于相应DLL的,EXPORTS语句下列出要导出的函数名称。我们可以在.def文件中的导出函数后加@n,如Max@1,Min@2,表示要导出的函数顺序号,在进行显式连时可以用到它。
  • 打赏
  • 举报
回复
jimette 2013-02-01
导出的时候要加extern!
  • 打赏
  • 举报
回复
xengine-qyt 2013-01-31
extern "C" { include }
  • 打赏
  • 举报
回复
Fomalhaut2 2013-01-31
C++程序里要用extern "C"吧。
  • 打赏
  • 举报
回复
zhangyihu321 2013-01-30
lib 版本对否???
  • 打赏
  • 举报
回复
linuxyf 2013-01-30
头文件里包含了我要调用的函数的
  • 打赏
  • 举报
回复
linuxyf 2013-01-30
这个类库我用的是它的源码,不存在导出函数,类库时纯C语言实现的
  • 打赏
  • 举报
回复
fangchao918628 2013-01-30
int __cdecl unsigned long __stdcall 看下C类库导出的是不是标准的
  • 打赏
  • 举报
回复
saliors 2013-01-30
找不到UnzipFileWithPassword函数的声明。 看看是不是加少了库,或者看看c源码有没有缺少UnzipFileWithPassword这个函数
  • 打赏
  • 举报
回复
schlafenhamster 2013-01-30
extern “C”UnzipFileWithPassword(char const *,char const *,char const *)
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-01-30 10:44
社区公告

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