jni 调用 DLL 出错 但是 C++直接访问DLL没有问题

zzlb0224 2010-05-18 02:33:09
rt

dll原型


__declspec(dllimport) bool WINAPI Start(unsigned short udpPort, char* errorMsg);


jni


JNIEXPORT jboolean JNICALL Java_TestDll_1Start
(JNIEnv *, jclass, jint udpport){
int nRetCode = 0;
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
char errorMsg[256] = "";
Start(udpport,errorMsg); //这个地方错了
printf("%s %i\r\n",errorMsg,udpport);
}
return nRetCode;
}


C++ main代码


int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
int udpPort = 1234;
char errorMsg[256] = "";
bool procRtn = false;
procRtn = Start(udpPort,errorMsg); //这样就没问题
///.....
}

return nRetCode;
}




...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlb0224 2010-05-20
  • 打赏
  • 举报
回复
貌似还是C++分配内存的问题
结贴
NASa_CJ 2010-05-19
  • 打赏
  • 举报
回复
Start(udpport,errorMsg); //这个地方错了
udpport从java传到c的过程中,是否正确地符合自己的期望?
zzlb0224 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 truediego 的回复:]

出了啥错呢?
另外,你用的MFC?编译成不依赖MFC的独立dll试试看呢
[/Quote]

使用和不适用mfc都是一样的
我试过的
zzlb0224 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ticmy 的回复:]

用JNA吧,不要直接用JNI
[/Quote]

正在尝试
wonflay 2010-05-18
  • 打赏
  • 举报
回复
使用JNative 方便
牛叔 2010-05-18
  • 打赏
  • 举报
回复
除了很麻烦
还是很麻烦
truediego 2010-05-18
  • 打赏
  • 举报
回复
出了啥错呢?
另外,你用的MFC?编译成不依赖MFC的独立dll试试看呢
欢乐极客 2010-05-18
  • 打赏
  • 举报
回复
没使用过。。
龙四 2010-05-18
  • 打赏
  • 举报
回复
用JNA吧,不要直接用JNI

62,614

社区成员

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

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