LuaJava编译错误"解析外部符号" [英] LuaJava compile error "Unresolved external symbol"
问题描述
最后,我编了。主要错误是关于VS ENVIROMENTAL变量。编译和链接正确的,我需要键入
%VisualStudoFolder%\\ VC \\ vcvarsall.bat AMD64
NMAKE生成文件-f
块引用>默认LuaJava发行只提供了32位二进制文件。显然,使用它们的64位虚拟机\\ OS导致异常。
此外,我不能只是改变Lua的二进制64位,因为这会导致
异常线程mainjava.lang.UnsatisfiedLinkError中:
org.keplerproject.luajava.LuaState._open()Lorg / keplerproject / luajava / CPTR;我不知道为什么会这样和谷歌没有帮助我。
我已经决定了,那是因为64位和32位的库是完全不同的,所以我必须重新编译LuaJava并连接自己。
我下载了从Lua回购源在SourceForge(luabinaries /文件/ 5.1.4 / WINDOWS%20Libraries /)(顺便说一句我试着用不同的版本,但我还没有成功),安装MSVS使用
NMAKE
实用程序Makefile文件。最后,我也跟着从LuaJava手册导游,但我只拿到了这一点:... \\ luajava-1.1> NMAKE的makefile -f
#Here是Java的编译文件日志#C编译
CL -nologo -DWIN32 -IC:\\ Program Files文件\\的Java \\ jdk1.7.0_21 \\ /包括-IC:\\ Program Files文件\\的Java \\ jdk1.7.0_21 \\ /有/ win32的-IP: \\的Lua \\包括-Fosrc \\ C \\\\-MD / C的src \\ C \\ luajava.c luajava.c链接/ DLL /nodefaultlib:\"msvcrt.lib退房手续:luajava-1.1.dll的src \\ C \\ luajava.obj病人:\\的Lua \\ LIB \\ lua5.1.lib
微软(R)增量链接器版本12.00.20827.3
版权所有(C)微软公司。版权所有。创建库luajava-1.1.lib和对象luajava,1.1.exp
luajava.obj:错误LNK2019:在功能_Java_org_keplerproject_luajava_LuaState_luajava_1open引用@ 16解析的外部符号__imp____iob_func
luajava.obj:错误LNK2019:在功能Java_org_keplerproject_luajava_LuaState_luajava_1open引用@ 16解析的外部符号__imp__fprintf
luajava.obj:错误LNK2019:在功能Java_org_keplerproject_luajava_LuaState_luajava_1open引用@ 16解析的外部符号__imp__exit
luajava.obj:错误LNK2001:无法解析的外部符号__fltused
LINK:错误LNK2001:无法解析的外部符号@ __DllMainCRTStartup 12
luajava-1.1.dll:致命错误LNK1120:5无法解析的外部
NMAKE:致命错误U1077:P:\\ MS Visual Studio 2010的\\ VC \\ BIN \\ LINK.EXE:回归code0x460
停止。此外这里是luajava.h 和< A HREF =https://drive.google.com/file/d/0B0g-p3J7zGeXTVFjUlJTOFRBR1U/edit?usp=sharing相对=nofollow> luajava.c
所以现在的问题是如何解决这个问题(希望如此,这将至少
LuaStateFactory.newLuaState()工作。openLibs()
)?解决方案我也遇到了这个问题,但后来得到解决。这里是该溶液中。结果,
我已经成功地,64位luajava-64.so,32位动态链接库,等等编译一个64位luajava-64.dll。下面是步骤。
1。 VS2010安装2.找到VS2010,Visual Studio工具
打开Visual Studio 64 Win64的命令提示符工具3.下载lua-5.1.5_Win64_vc10_lib.zip
。 (静态库错关键的一点是,这个静态库可以下载错误,或者你下载一个DLL动态库,下载地址:LUA静态库下载:
http://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/)
下载luajava-1.1.zip4.打开的config.win修改LUA_DIR和JDK两条路径对自己的道路
请注意,您可能没有低于lib目录下你的LUA_DIR,然后创建你自己的需求,并在其中lua5.1.lib5. CD输入luajava-1.1目录6.运行NMAKE -f Makefile.win7.编译成功
这是在编译时的情况:
C:\\用户\\ softm \\桌面\\ luajava \\ luajava-1.1&GT; NMAKE -f Makefile.win微软(R)程序维护实用10.00.30319.01版本
版权所有(C)微软公司。版权所有。D:\\软\\的Java \\ jdk6_33 \\ BIN \\ javac的-sourcepath ./src/java的src / JAVA /组织/ KEP
lerproject / luajava / CPtr.java
D:\\软\\的Java \\ jdk6_33 \\ BIN \\ javac的-sourcepath ./src/java的src / JAVA /组织/ KEP
lerproject / luajava / JavaFunction.java
注:某些输入文件使用未经检查或不安全的操作。
注:欲了解更多信息,请使用-Xlint:unchecked重新编译。
D:\\软\\的Java \\ jdk6_33 \\ BIN \\ javac的-sourcepath ./src/java的src / JAVA /组织/ KEP
lerproject / luajava / LuaJavaAPI.java
注:某些输入文件使用未经检查或不安全的操作。
注:欲了解更多信息,请使用-Xlint:unchecked重新编译。
D:\\软\\的Java \\ jdk6_33 \\ BIN \\ javac的-sourcepath ./src/java的src / JAVA /组织/ KEP
lerproject / luajava / Console.java
注:某些输入文件使用未经检查或不安全的操作。
注:欲了解更多信息,请使用-Xlint:unchecked重新编译。
CD的src / java的
D:\\软\\的Java \\ jdk6_33 \\ BIN \\罐子CVF ../../luajava-1.1.jar组织/ keplerproje
克拉/ luajava / *。类
标记列表(舱单)
增加:组织/ keplerproject / luajava / Console.class(读= 1921)(写= 1122)(COM pressed 41
%)
增加:组织/ keplerproject / luajava / CPtr.class(读= 510)(写= 359)(29%玉米pression)
增加:组织/ keplerproject / luajava / JavaFunction.class(读= 942)(写= 524)(COM pressed
44%)
增加:组织/ keplerproject / luajava / LuaException.class(读= 556)(写= 352)(COM pressed
36%)
增加:组织/ keplerproject / luajava / LuaInvocationHandler.class(读= 1621)(书= 83
3)(48%玉米pression)
增加:组织/ keplerproject / luajava / LuaJavaAPI.class(读= 7168)(写= 3745)(COM pressed
47%)
增加:组织/ keplerproject / luajava / LuaObject.class(读= 9045)(写= 3978)(COM pressed
56%)
增加:组织/ keplerproject / luajava / LuaState.class(读= 18118)(写= 6435)(COM pressed
64%)
增加:组织/ keplerproject / luajava / LuaStateFactory.class(读= 1293)(写= 722)(pressure
减少44%)
CD ..
CD ..
D:\\软\\的Java \\ jdk6_33 \\ BIN \\ javadoc的-classpathSRC / JAVA /-public -quiet
-dDOC /美国/ API的src / JAVA /组织/ keplerproject / luajava / JavaFunction.java的src / JAVA /
组织/ keplerproject / luajava / LuaException.java的src / JAVA /组织/ keplerproject / luajava /
LuaInvocationHandler.java SRC / JAVA /组织/ keplerproject / luajava / LuaObject.java SR
C /爪哇/组织/ keplerproject / luajava / LuaState.java的src / JAVA /组织/ keplerproject / luaja
VA / LuaStateFactory.java的src / JAVA /组织/ keplerproject / luajava / Console.java
D:\\软\\的Java \\ jdk6_33 \\ BIN \\ JAVAH-o SRC / C / luajava.h -classpathluajava-
1.1.jarorg.keplerproject.luajava.LuaState
CL -nologo -DWIN32 -ID:\\软\\的Java \\ jdk6_33 /包括-ID:\\软\\的Java \\ JDK6
_33 /包括/ win32的-IC:\\用户\\ softm \\桌面\\ luajava \\ LUA \\包括-Fosrc \\ C \\\\ -MD
/ C SRC \\ C \\ luajava.c
luajava.c
链接/ DLL /nodefaultlib:\"msvcrt.lib退房手续:luajava-1.1.dll的src \\ C \\ luajava
.OBJ C:\\用户\\ softm \\桌面\\ luajava \\ LUA \\ LIB \\ lua5.1.lib
微软(R)增量链接器版本10.00.30319.01
版权所有(C)微软公司。版权所有。
创建库luajava-1.1.lib和对象luajava,1.1.exp
luajava.obj:警告LNK4217:本地定义的符号exit函数Java_org_keplerproject
进口_luajava_LuaState_luajava_1open
luajava.obj:警告LNK4217:本地定义的符号函数fprintf Java_org_keplerproj
进口ect_luajava_LuaState_luajava_1open
luajava.obj:警告LNK4217:本地定义的符号__iob_func功能Java_org_keplerp
进口roject_luajava_LuaState_luajava_1open
德尔SRC \\ java的\\组织\\ keplerproject \\ luajava \\ *。类的src \\ C \\ *。 OBJ * .PDB * .EXP *
.lib *会* .EXP .ilk
------------------
构建完整
------------------Finally I compiled it. Main mistake was about VS enviromental variables. To compile and link proper I needed to type
%VisualStudoFolder%\VC\vcvarsall.bat amd64 nmake -f makefile
Default LuaJava distributions provides only 32-bit binaries. Obviously using them with 64-bit VM\OS causes exception.
Also I can't just change Lua binaries to 64-bit, because this causes
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.keplerproject.luajava.LuaState._open()Lorg/keplerproject/luajava/CPtr;
I don't know why is it so and Google didn't help me.
I've decided it's because 64- and 32-bit libs are completely different, so I must recompile LuaJava and make linking myself.
I downloaded sources from Lua repo at SourceForge (luabinaries/files/5.1.4/Windows%20Libraries/) (btw I tried with different versions, but I have not succeeded), installed MSVS to use
nmake
utility with Makefiles. Finally I followed guides from "LuaJava Manual" but I got only this:...\luajava-1.1>nmake -f makefile " #Here was java-files compilation logs #C compilation cl -nologo -DWIN32 -I"C:\Program Files\Java\jdk1.7.0_21\/include" -I"C:\Program Files\Java\jdk1.7.0_21\/include/win32" -I"P:\Lua\include" -Fosrc\C\\ -MD /c src\c\luajava.c luajava.c link /dll /nodefaultlib:"msvcrt.lib" -out:luajava-1.1.dll src\c\luajava.obj P:\Lua\lib\lua5.1.lib Microsoft (R) Incremental Linker Version 12.00.20827.3 Copyright (C) Microsoft Corporation. All rights reserved. Creating library luajava-1.1.lib and object luajava-1.1.exp luajava.obj : error LNK2019: unresolved external symbol __imp____iob_func referenced in function _Java_org_keplerproject_luajava_LuaState_luajava_1open@16 luajava.obj : error LNK2019: unresolved external symbol __imp__fprintf referenced in function Java_org_keplerproject_luajava_LuaState_luajava_1open@16 luajava.obj : error LNK2019: unresolved external symbol __imp__exit referenced in function Java_org_keplerproject_luajava_LuaState_luajava_1open@16 luajava.obj : error LNK2001: unresolved external symbol "__fltused" LINK : error LNK2001: unresolved external symbol "__DllMainCRTStartup@12" luajava-1.1.dll : fatal error LNK1120: 5 unresolved externals NMAKE : fatal error U1077: "P:\MS Visual Studio 2010\VC\BIN\link.EXE" : return code "0x460" Stop.
Also here is luajava.h and luajava.c
So the question is how to resolve that problem (desirable so that it will work with at least
LuaStateFactory.newLuaState().openLibs()
)?解决方案I have encountered this problem, but later resolved. Here is the solution.
I've managed to compile a 64-bit luajava-64.dll, 64-bit luajava-64.so, 32-bit dynamic link libraries, and so on.Here are the steps.
1. Install vs2010 2. Locate vs2010-visual studio tools Open visual studio x64 Win64 Command Prompt tool 3. Download lua-5.1.5_Win64_vc10_lib.zip . (Static library wrong key point is that this static library may download error, or you download as a dynamic library dll, download address: lua static library download: http://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/) Download luajava-1.1.zip 4. Open config.win modify LUA_DIR and JDK two paths for their own path Note that you may not have your LUA_DIR below lib directory, then create your own needs and into which lua5.1.lib 5. cd enter luajava-1.1 directory 6. Run nmake -f Makefile.win 7. Compile success Here is the situation at compile time: C: \ Users \ softm \ Desktop \ luajava \ luajava-1.1> nmake -f Makefile.win Microsoft (R) Program Maintenance Utility 10.00.30319.01 version Copyright (C) Microsoft Corporation. All rights reserved. "D: \ soft \ Java \ jdk6_33 \ bin \ javac" -sourcepath ./src/java src / java / org / kep lerproject / luajava / CPtr.java "D: \ soft \ Java \ jdk6_33 \ bin \ javac" -sourcepath ./src/java src / java / org / kep lerproject / luajava / JavaFunction.java Note: Some input files use unchecked or unsafe operations. Note: For more information, please use the -Xlint: unchecked recompiled. "D: \ soft \ Java \ jdk6_33 \ bin \ javac" -sourcepath ./src/java src / java / org / kep lerproject / luajava / LuaJavaAPI.java Note: Some input files use unchecked or unsafe operations. Note: For more information, please use the -Xlint: unchecked recompiled. "D: \ soft \ Java \ jdk6_33 \ bin \ javac" -sourcepath ./src/java src / java / org / kep lerproject / luajava / Console.java Note: Some input files use unchecked or unsafe operations. Note: For more information, please use the -Xlint: unchecked recompiled. cd src / java "D: \ soft \ Java \ jdk6_33 \ bin \ jar" cvf ../../luajava-1.1.jar org / keplerproje ct / luajava / *. class Marked list (manifest) Increase: org / keplerproject / luajava / Console.class (read = 1921) (write = 1122) (compressed 41 %) Increase: org / keplerproject / luajava / CPtr.class (read = 510) (write = 359) (29% compression) Increase: org / keplerproject / luajava / JavaFunction.class (read = 942) (write = 524) (compressed 44%) Increase: org / keplerproject / luajava / LuaException.class (read = 556) (write = 352) (compressed 36%) Increase: org / keplerproject / luajava / LuaInvocationHandler.class (read = 1621) (written = 83 3) (48% compression) Increase: org / keplerproject / luajava / LuaJavaAPI.class (read = 7168) (write = 3745) (compressed 47%) Increase: org / keplerproject / luajava / LuaObject.class (read = 9045) (write = 3978) (compressed 56%) Increase: org / keplerproject / luajava / LuaState.class (read = 18118) (write = 6435) (compressed 64%) Increase: org / keplerproject / luajava / LuaStateFactory.class (read = 1293) (write = 722) (Pressure Reduced by 44%) cd .. cd .. "D: \ soft \ Java \ jdk6_33 \ bin \ javadoc" -classpath "src / java /" -public -quiet -d "doc / us / API" src / java / org / keplerproject / luajava / JavaFunction.java src / java / org / keplerproject / luajava / LuaException.java src / java / org / keplerproject / luajava / LuaInvocationHandler.java src / java / org / keplerproject / luajava / LuaObject.java sr c / java / org / keplerproject / luajava / LuaState.java src / java / org / keplerproject / luaja va / LuaStateFactory.java src / java / org / keplerproject / luajava / Console.java "D: \ soft \ Java \ jdk6_33 \ bin \ javah" -o src / c / luajava.h -classpath "luajava- 1.1.jar "org.keplerproject.luajava.LuaState cl -nologo -DWIN32 -I "D: \ soft \ Java \ jdk6_33 / include" -I "D: \ soft \ Java \ jdk6 _33 / Include / win32 "-I" C: \ Users \ softm \ Desktop \ luajava \ lua \ include "-Fosrc \ C \\ -MD / c src \ c \ luajava.c luajava.c link / dll /nodefaultlib:"msvcrt.lib "-out: luajava-1.1.dll src \ c \ luajava .obj C: \ Users \ softm \ Desktop \ luajava \ lua \ lib \ lua5.1.lib Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. Creating library luajava-1.1.lib and objects luajava-1.1.exp luajava.obj: warning LNK4217: locally defined symbol exit function Java_org_keplerproject Import _luajava_LuaState_luajava_1open luajava.obj: warning LNK4217: locally defined symbol fprintf function Java_org_keplerproj Import ect_luajava_LuaState_luajava_1open luajava.obj: warning LNK4217: locally defined symbol __iob_func function Java_org_keplerp Import roject_luajava_LuaState_luajava_1open del src \ java \ org \ keplerproject \ luajava \ *. class src \ c \ *. obj * .pdb * .exp * .lib * .exp * .ilk ------------------ Build Complete ------------------
这篇关于LuaJava编译错误&QUOT;解析外部符号&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!