请教一个关于JNI的问题,急急急!!!

rogerhcho 2005-10-21 08:51:51
这里有一个用C写的lib文件,里面封装了n个函数,还有一份所有函数结构的说明文档,现在要通过JAVA来调用这些函数。实现其功能,具体函数的源文件没有。

请问怎么怎么用JAVA调用这些函数?

我用JNI实现的时候用VC编译,我是在C文件里直接调用了接口函数。希望各位高手给予指导,或者给指点一下方法,谢谢!在编译过程中报错:
Compiling...
testrcv.cpp
Linking...
Creating library Debug/testcas.lib and object Debug/testcas.exp
testrcv.obj : error LNK2001: unresolved external symbol "void __cdecl tr_pmsg(char *,int)" (?tr_pmsg@@YAXPADH@Z)
testrcv.obj : error LNK2001: unresolved external symbol "void __cdecl set_format(char *,...)" (?set_format@@YAXPADZZ)
testrcv.obj : error LNK2001: unresolved external symbol "struct ctl_tr_str Ctl_tr" (?Ctl_tr@@3Uctl_tr_str@@A)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_close(struct cas_gen_str *)" (?casmf_close@@YAFPAUcas_gen_str@@@Z)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_snd(struct cas_gen_str *,char *)" (?casmf_snd@@YAFPAUcas_gen_str@@PAD@Z)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_abort(struct cas_gen_str *)" (?casmf_abort@@YAFPAUcas_gen_str@@@Z)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_rcv(struct cas_gen_str *,char *,int)" (?casmf_rcv@@YAFPAUcas_gen_str@@PADH@Z)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_stop(void)" (?casmf_stop@@YAFXZ)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_open(struct cas_ope_str *,int,int)" (?casmf_open@@YAFPAUcas_ope_str@@HH@Z)
testrcv.obj : error LNK2001: unresolved external symbol "short __cdecl casmf_init(int,char *)" (?casmf_init@@YAFHPAD@Z)
Debug/testcas.dll : fatal error LNK1120: 10 unresolved externals
Error executing link.exe.

testcas.dll - 11 error(s), 0 warning(s)
其中报错的都是所要调用的lib里的函数
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyanqiu 2005-10-27
  • 打赏
  • 举报
回复
我现在也遇到相同的问题
不知道在符合jni规范的C文件中怎么调用外部dll,一块找办法吧~~
rogerhcho 2005-10-27
  • 打赏
  • 举报
回复
rogerhcho 2005-10-27
  • 打赏
  • 举报
回复
问题已解决。市自己在include的时候没有把它加到extern "C" {中
oyljerry 2005-10-21
  • 打赏
  • 举报
回复
这个dll是根据lib重新生成的? 函数调用约定 __stdcall等试试
rogerhcho 2005-10-21
  • 打赏
  • 举报
回复
是为了调用别人提供的一个lib,因为要在java中调用,但是这个lib并不符合jni的标准,所以就要写一个dll,让dll调用lib的函数,然后再在java里调用dll。可是在link的时候报错,不知道是程序写法的问题,还是环境设置的问题,请哪位大虾能帮帮忙,急急急,谢谢……
rogerhcho 2005-10-21
  • 打赏
  • 举报
回复
恩,当然,我用C直接调用写一个exe都没有错,可是在同样的环境下想用jni写一个dll给java调用就不让过,是不是,还要引入什么???我是把lib放到VC的目录下,然后在object/library modules里引入的.这样可以吧!?
vcmute 2005-10-21
  • 打赏
  • 举报
回复
lib库link了么?

16,551

社区成员

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

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

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