c语言 c2373错误,Java开发网 - jni小错误

Posted by:manhunt

Posted on:2006-04-23 11:07

照着"Java进阶-JNI使用技巧点滴(二)"中的例子编了个很小的程序,就是在java中定义一个字符串利用c显示出来。

其中一个c.cpp 用到自定义函数convertUniToANSI,用cl命令编译成dll文件时出现以下错误:

c.cpp ( 8 ) : error c2065: 'convertUniToANSI' : undeclared identifier

c.cpp ( 20 ) : error c2373: 'convertUniToANSI': redefinition; defferent type modifiers

=====================================

以下为代码:

c语言主程序c.cpp

#include

#include "connection.h"

#include "windows.h"

JNIEXPORT void JNICALL Java_connection_HelloWorld (JNIEnv*env, jclass jobject,jstring text)

{

char* sp;

convertUniToANSI(env,text,sp);

printf("sp= %s\n",sp);

}

JNIEXPORT jstring JNICALL Java_connection_cToJava (JNIEnv *env,jclass obj)

{

jstring jstr;

char str[]="fuck this world!\n";

jstr=env->NewStringUTF(str);

return jstr;

}

void convertUniToANSI(JNIEnv *env,jstring oldStr,char* newStr)

{

int desc_len=256*2;

int len;

if(oldStr==NULL||newStr==NULL)

return ;

wchar_t *w_buffer = new wchar_t[256];

wcscpy(w_buffer,env->GetStringChars(oldStr,0));

env->ReleaseStringChars(oldStr,w_buffer);

len = WideCharToMultiByte(CP_ACP,0,w_buffer,1024,newStr,desc_len,NULL,NULL);

if(len>0 && len

{

newStr[len]='\0';

}

delete[] w_buffer;

}

=====================================

连接程序:connection.java

public class connection

{

static

{

System.loadLibrary( "c" );

}

public native static void HelloWorld(String text);

//public native static String cToJava();

}

====================================

测试程序:test.java

public class test

{

public static void main(String[] args)

{

connection b=new connection();

String text="fthe world!";

b.HelloWorld(text);

//System.out.println(b.cToJava());

}

}

attachment.giftest.rar (1.31k)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值