~~~~~~~~高分。JAVA调用VC++写的DLL。如何使VC++的函数使用JAVA的String类型的字符串!

wendi 2007-06-19 03:18:29
JAVA调用VC++的DLL。这是JAVA代码
public class JavaCall {
static {
System.loadLibrary("changebk");
}

public native static void changeecl(String s);

public static void main(String[] args) {
JavaCall jc = new JavaCall();
String strDesktop="E:\\coco.gif";
jc.changeecl(strDesktop);
System.out.println("调用结束");
}
}

这是VC++代码。他的作用是设置桌面背景为e:\\ibmee.gif
NIEXPORT void JNICALL Java_JavaCall_changeecl (JNIEnv *env, jclass cls,jstring str)
{
IActiveDesktop *pAD;
COMPONENT comp;
CoInitialize(NULL);
CoCreateInstance( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**)&pAD );
pAD->SetWallpaper(L"e:\\ibmee.gif",0);
pAD->ApplyChanges(AD_APPLY_ALL);
pAD->Release();
CoUninitialize();


}
现在我想根据JAVA传过来的String 类型的参数strDesktop来灵活设置桌面,而不是在VC++中象 pAD->SetWallpaper(L"e:\\ibmee.gif",0); 这样写死。应该怎么修改???
...全文
315 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fkyq01 2007-06-20
  • 打赏
  • 举报
回复
自己看看吧,会有点帮助的
http://www.blogjava.net/sunking/archive/2006/04/03/38981.aspx
CrazyGou 2007-06-19
  • 打赏
  • 举报
回复
pAD->SetWallpaper((unsigned short *)env->GetStringUTFChars(str, false), 0);
wendi 2007-06-19
  • 打赏
  • 举报
回复
楼上的VC编译时报
--------------------Configuration: changebk - Win32 Debug--------------------
Compiling...
changebk.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\changebk\changebk.cpp(23) : error C2664: 'SetWallpaper' : cannot convert parameter 1 from 'const char *' to 'const unsigned short *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.
CrazyGou 2007-06-19
  • 打赏
  • 举报
回复
pAD->SetWallpaper(env->GetStringUTFChars(str, false), 0);
fool_leave 2007-06-19
  • 打赏
  • 举报
回复
没有做过

不过用String得到char数组或者byte数组,由vc来使用应该可以吧

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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