jni生成DLL的问题

bjskyhorse 2010-09-13 02:14:15
我就是按照有个论坛eoeandroid论坛上讲JNI的那篇文章,写了TestDel的例子,在VS2005里面New了一个工程选址VC建立win32 project,选中dll建立empty project,将javah生成的头文件添加到此工程。
代码里面就是
JNIEXPORT void JNICALL Java_TestDel_creFolder(JNIEnv*,jclass)。。。。。。


编译也没有错误,但是没有生成dll.但是有一个warning:
1>正在链接...
1>LINK : 没有找到 E:\test\Debug\test.dll 或上一个增量链接没有生成它;正在执行完全链接
1>test.def(1) : warning LNK4017: Java_TestDel_creFolder 语句不支持目标平台;已忽略


这个我还需要像做普通的DLL那样做一个DEF文件,然后写上导出那些函数吗?
那个破资料上也没有说啊。顺便,BS一下网上的资料。
我当时为了生成那个头文件,执行javah命令怎么都不对,不是提示非法的软件包名称就是说找不到类。那些资料就是没有说很重要的一句:要执行set classpath,或者设置环境变量。真是!!!!!!!!!!
...全文
379 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
芒果很香 2012-03-19
  • 打赏
  • 举报
回复
你在生成dll文件的时候,把MD改成MT试试
传智二哥 2011-11-07
  • 打赏
  • 举报
回复
问一下,这个您实现了吗
我是要把以前有源代码的DLL,改成so,然后在android里面的应用apk调用。所以我想先把应用通过jni调用dll走通,然后把dll改成so.通过ndk
bjskyhorse 2010-09-16
  • 打赏
  • 举报
回复
我是要把以前有源代码的DLL,改成so,然后在android里面的应用apk调用。所以我想先把应用通过jni调用dll走通,然后把dll改成so.通过ndk
bjskyhorse 2010-09-16
  • 打赏
  • 举报
回复
也就是说JNI不行,一定要NDK去做so
liujinrui 2010-09-15
  • 打赏
  • 举报
回复
android下的so可以直接用ndk编译。
liujinrui 2010-09-15
  • 打赏
  • 举报
回复
android下没有dll,只有so哦。

windows下的jni调用dll有很多资料的,兄弟你还是别查android上的jni调用了。
guzhijie1981 2010-09-15
  • 打赏
  • 举报
回复
你要找arm编译器编译linux下的动态库。so
载舟之水 2010-09-14
  • 打赏
  • 举报
回复
就算你能生成DLL,那也不是ARM的啊,怎么能在真机上跑
载舟之水 2010-09-14
  • 打赏
  • 举报
回复
我下载了10期特刊,全部找了一遍,没看到你说的用VC写DLL的方法啊,是你眼花了还是我眼花了-_-
yihua0001 2010-09-14
  • 打赏
  • 举报
回复
还没在windows下用过jni。
bjskyhorse 2010-09-14
  • 打赏
  • 举报
回复
其实现在其他问题都可以先不管,但这个问题却需要解决:

D:\Program Files\Java\jdk1.6.0_21\bin>java E:\Project\jni-test\TestDel\src\TestD
el.class
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Project\jni-test\T
estDel\src\TestDel/class
Caused by: java.lang.ClassNotFoundException: E:\Project\jni-test\TestDel\src\Tes
tDel.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: E:\Project\jni-test\TestDel\src\TestDel.class. P
rogram will exit.
bjskyhorse 2010-09-14
  • 打赏
  • 举报
回复
原文在http://www.eoeandroid.com/thread-8312-1-1.html,CSdn上也有下
载舟之水 2010-09-14
  • 打赏
  • 举报
回复
没看懂,为什么在VC下写DLL?jni生成的不是.so吗
你说的"eoeandroid论坛上讲JNI的那篇文章" 给个链接看看
  • 打赏
  • 举报
回复
bjskyhorse 2010-09-14
  • 打赏
  • 举报
回复
我下载了10期特刊,全部找了一遍,没看到你说的用VC写DLL的方法啊,是你眼花了还是我眼花了-_-
就是JNI实现里面,最后一页
bjskyhorse 2010-09-14
  • 打赏
  • 举报
回复
只需要建立一个dll的工程,选择simple project,然后将jni的.h和.cpp都加到工程里,设置vc6的include路径为jdk的include,然后编译就可以了。编译成功后会生成.dll

我编译生成DLL,然后把DLL放在.java和.class目录下,执行命令,提示 Exception in thread "main" java.lang.NoClassDefFoundError
java E:\Project\jni-test\TestDel\src\TestD
el.class
载舟之水 2010-09-14
  • 打赏
  • 举报
回复
你说的是这个吧 http://singlerwong.spaces.eepw.com.cn/articles/article/item/25111
这有什么意义呢 DLL的功能还是受jni.h的限制,和HelloJni没有本质区别啊。
vclongking 2010-09-14
  • 打赏
  • 举报
回复
额...DLL
dinjay 2010-09-14
  • 打赏
  • 举报
回复
只需要建立一个dll的工程,选择simple project,然后将jni的.h和.cpp都加到工程里,设置vc6的include路径为jdk的include,然后编译就可以了。编译成功后会生成.dll
yyy025025025 2010-09-13
  • 打赏
  • 举报
回复
希望有经验的兄弟,帮忙分析下原因。
加载更多回复(2)

80,488

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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