2015-02-11 77 views
1

现在我有libssl.so和libcrypto.so,但我不知道如何在cocos2dx中使用它们。它总是给我这样的错误:如何在cocos2dx中使用openssl库?

jni/../../Classes/Custom_SSL.cpp:18: error: undefined reference to 'RSA_new' 
jni/../../Classes/Custom_SSL.cpp:19: error: undefined reference to 'PEM_read_RSA_PUBKEY' 
jni/../../Classes/Custom_SSL.cpp:25: error: undefined reference to 'RSA_size' 
jni/../../Classes/Custom_SSL.cpp:27: error: undefined reference to 'RSA_public_encrypt' 
jni/../../Classes/Custom_SSL.cpp:33: error: undefined reference to 'RSA_free' 

我该如何解决这个问题?

+0

添加了下一个选项吗? APP_LDFLAGS:= -lssl -lcrypto – 2015-02-12 08:47:33

+0

是的,我做了。但似乎找不到-lssl和-crypto。也许Android.mk有些问题。 – Nicholas 2015-02-12 09:28:32

+0

试试这个如何添加库http://stackoverflow.com/questions/28437172/compiling-openssl-on-android-with-cocos2d-x-and-ndk/28437978#28437978 – 2015-02-13 10:14:12

回答

2

现在我知道如何解决这个问题。该程序无法连接到libssl.so和libcrypto.so,所以它会给我错误“undefined reference to ...”。 我将openssl文件夹添加到外部文件夹。

在openssl文件夹中有Android.mk的代码。

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := openssl 
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libssl.so 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencrypto 
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libcrypto.so 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := openssl_static 
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libssl.a 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencrypto_static 
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libcrypto.a 
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include 
include $(PREBUILT_STATIC_LIBRARY) 

接下来,CD ../cocos,我必须要改变其他Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := cocos2dx_static 

LOCAL_MODULE_FILENAME := libcocos2d 

LOCAL_SRC_FILES := \ 
cocos2d.cpp \ 
2d/CCAction.cpp \ 
2d/CCActionCamera.cpp \ 
2d/CCActionCatmullRom.cpp \ 
2d/CCActionEase.cpp \ 
2d/CCActionGrid.cpp \ 
2d/CCActionGrid3D.cpp \ 
2d/CCActionInstant.cpp \ 
2d/CCActionInterval.cpp \ 
2d/CCActionManager.cpp \ 
2d/CCActionPageTurn3D.cpp \ 
2d/CCActionProgressTimer.cpp \ 
2d/CCActionTiledGrid.cpp \ 
2d/CCActionTween.cpp \ 
2d/CCAnimation.cpp \ 
2d/CCAnimationCache.cpp \ 
2d/CCAtlasNode.cpp \ 
2d/CCClippingNode.cpp \ 
2d/CCComponent.cpp \ 
2d/CCComponentContainer.cpp \ 
2d/CCDrawNode.cpp \ 
2d/CCDrawingPrimitives.cpp \ 
2d/CCFont.cpp \ 
2d/CCFontAtlas.cpp \ 
2d/CCFontAtlasCache.cpp \ 
2d/CCFontCharMap.cpp \ 
2d/CCFontFNT.cpp \ 
2d/CCFontFreeType.cpp \ 
2d/CCGLBufferedNode.cpp \ 
2d/CCGrabber.cpp \ 
2d/CCGrid.cpp \ 
2d/CCLabel.cpp \ 
2d/CCLabelAtlas.cpp \ 
2d/CCLabelBMFont.cpp \ 
2d/CCLabelTTF.cpp \ 
2d/CCLabelTextFormatter.cpp \ 
2d/CCLayer.cpp \ 
2d/CCMenu.cpp \ 
2d/CCMenuItem.cpp \ 
2d/CCMotionStreak.cpp \ 
2d/CCNode.cpp \ 
2d/CCNodeGrid.cpp \ 
2d/CCParallaxNode.cpp \ 
2d/CCParticleBatchNode.cpp \ 
2d/CCParticleExamples.cpp \ 
2d/CCParticleSystem.cpp \ 
2d/CCParticleSystemQuad.cpp \ 
2d/CCProgressTimer.cpp \ 
2d/CCRenderTexture.cpp \ 
2d/CCScene.cpp \ 
2d/CCSprite.cpp \ 
2d/CCSpriteBatchNode.cpp \ 
2d/CCSpriteFrame.cpp \ 
2d/CCSpriteFrameCache.cpp \ 
2d/CCTMXLayer.cpp \ 
2d/CCFastTMXLayer.cpp \ 
2d/CCTMXObjectGroup.cpp \ 
2d/CCTMXTiledMap.cpp \ 
2d/CCFastTMXTiledMap.cpp \ 
2d/CCTMXXMLParser.cpp \ 
2d/CCTextFieldTTF.cpp \ 
2d/CCTileMapAtlas.cpp \ 
2d/CCTransition.cpp \ 
2d/CCTransitionPageTurn.cpp \ 
2d/CCTransitionProgress.cpp \ 
2d/CCTweenFunction.cpp \ 
3d/CCAnimate3D.cpp \ 
3d/CCAnimation3D.cpp \ 
3d/CCBundle3D.cpp \ 
3d/CCBundleReader.cpp \ 
3d/CCMesh.cpp \ 
3d/CCMeshSkin.cpp \ 
3d/CCSprite3DMaterial.cpp \ 
3d/CCObjLoader.cpp \ 
3d/CCSprite3D.cpp \ 
platform/CCGLViewProtocol.cpp \ 
platform/CCFileUtils.cpp \ 
platform/CCSAXParser.cpp \ 
platform/CCThread.cpp \ 
platform/CCImage.cpp \ 
math/CCAffineTransform.cpp \ 
math/CCGeometry.cpp \ 
math/CCVertex.cpp \ 
math/Mat4.cpp \ 
math/MathUtil.cpp \ 
math/Quaternion.cpp \ 
math/TransformUtils.cpp \ 
math/Vec2.cpp \ 
math/Vec3.cpp \ 
math/Vec4.cpp \ 
base/CCAutoreleasePool.cpp \ 
base/CCConfiguration.cpp \ 
base/CCConsole.cpp \ 
base/CCData.cpp \ 
base/CCDataVisitor.cpp \ 
base/CCDirector.cpp \ 
base/CCEvent.cpp \ 
base/CCEventAcceleration.cpp \ 
base/CCEventCustom.cpp \ 
base/CCEventDispatcher.cpp \ 
base/CCEventFocus.cpp \ 
base/CCEventKeyboard.cpp \ 
base/CCEventController.cpp \ 
base/CCEventListener.cpp \ 
base/CCEventListenerController.cpp \ 
base/CCEventListenerAcceleration.cpp \ 
base/CCEventListenerCustom.cpp \ 
base/CCEventListenerFocus.cpp \ 
base/CCEventListenerKeyboard.cpp \ 
base/CCEventListenerMouse.cpp \ 
base/CCEventListenerTouch.cpp \ 
base/CCEventMouse.cpp \ 
base/CCEventTouch.cpp \ 
base/CCIMEDispatcher.cpp \ 
base/CCNS.cpp \ 
base/CCProfiling.cpp \ 
base/CCRef.cpp \ 
base/CCScheduler.cpp \ 
base/CCScriptSupport.cpp \ 
base/CCTouch.cpp \ 
base/CCUserDefault.cpp \ 
base/CCUserDefaultAndroid.cpp \ 
base/CCValue.cpp \ 
base/TGAlib.cpp \ 
base/ZipUtils.cpp \ 
base/atitc.cpp \ 
base/base64.cpp \ 
base/ccCArray.cpp \ 
base/ccFPSImages.c \ 
base/ccTypes.cpp \ 
base/ccUTF8.cpp \ 
base/ccUtils.cpp \ 
base/etc1.cpp \ 
base/s3tc.cpp \ 
base/CCController.cpp \ 
base/CCController-android.cpp \ 
base/ObjectFactory.cpp \ 
renderer/CCBatchCommand.cpp \ 
renderer/CCCustomCommand.cpp \ 
renderer/CCGLProgram.cpp \ 
renderer/CCGLProgramCache.cpp \ 
renderer/CCGLProgramState.cpp \ 
renderer/CCGLProgramStateCache.cpp \ 
renderer/CCGroupCommand.cpp \ 
renderer/CCQuadCommand.cpp \ 
renderer/CCMeshCommand.cpp \ 
renderer/CCRenderCommand.cpp \ 
renderer/CCRenderer.cpp \ 
renderer/CCTexture2D.cpp \ 
renderer/CCTextureAtlas.cpp \ 
renderer/CCTextureCache.cpp \ 
renderer/ccGLStateCache.cpp \ 
renderer/ccShaders.cpp \ 
deprecated/CCArray.cpp \ 
deprecated/CCSet.cpp \ 
deprecated/CCString.cpp \ 
deprecated/CCDictionary.cpp \ 
deprecated/CCDeprecated.cpp \ 
deprecated/CCNotificationCenter.cpp \ 
physics/CCPhysicsBody.cpp \ 
physics/CCPhysicsContact.cpp \ 
physics/CCPhysicsJoint.cpp \ 
physics/CCPhysicsShape.cpp \ 
physics/CCPhysicsWorld.cpp \ 
physics/chipmunk/CCPhysicsBodyInfo_chipmunk.cpp \ 
physics/chipmunk/CCPhysicsContactInfo_chipmunk.cpp \ 
physics/chipmunk/CCPhysicsJointInfo_chipmunk.cpp \ 
physics/chipmunk/CCPhysicsShapeInfo_chipmunk.cpp \ 
physics/chipmunk/CCPhysicsWorldInfo_chipmunk.cpp \ 
../external/ConvertUTF/ConvertUTFWrapper.cpp \ 
../external/ConvertUTF/ConvertUTF.c \ 
../external/tinyxml2/tinyxml2.cpp \ 
../external/unzip/ioapi.cpp \ 
../external/unzip/unzip.cpp \ 
../external/edtaa3func/edtaa3func.cpp \ 
../external/xxhash/xxhash.c 


LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) \ 
        $(LOCAL_PATH)/. \ 
        $(LOCAL_PATH)/platform/android \ 
        $(LOCAL_PATH)/../external/tinyxml2 \ 
        $(LOCAL_PATH)/../external/unzip \ 
        $(LOCAL_PATH)/../external/chipmunk/include/chipmunk \ 
        $(LOCAL_PATH)/../external/xxhash \ 
        $(LOCAL_PATH)/../external/nslog\ 
        $(LOCAL_PATH)/../external/curl \ 
        $(LOCAL_PATH)/../external/openssl \ 
        $(LOCAL_PATH)/../external 

LOCAL_C_INCLUDES := $(LOCAL_PATH) \ 
        $(LOCAL_PATH)/. \ 
        $(LOCAL_PATH)/platform/android \ 
        $(LOCAL_PATH)/../external \ 
        $(LOCAL_PATH)/../external/tinyxml2 \ 
        $(LOCAL_PATH)/../external/unzip \ 
        $(LOCAL_PATH)/../external/chipmunk/include/chipmunk \ 
        $(LOCAL_PATH)/../external/edtaa3func \ 
        $(LOCAL_PATH)/../external/xxhash \ 
        $(LOCAL_PATH)/../external/ConvertUTF \ 
        $(LOCAL_PATH)/../external/openssl \ 
        $(LOCAL_PATH)/../external/nslog 


LOCAL_LDLIBS := -lGLESv2 \ 
       -llog \ 
       -lz \ 
       -landroid 



LOCAL_EXPORT_LDLIBS := -lGLESv2 \ 
         -llog \ 
         -lz \ 
         -landroid 

#add shared library (if you need)     
#LOCAL_SHARED_LIBRARIES := opencrypto 
#LOCAL_SHARED_LIBRARIES += openssl 

LOCAL_WHOLE_STATIC_LIBRARIES := cocos_freetype2_static 
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static 
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dxandroid_static 

#add static library 
LOCAL_WHOLE_STATIC_LIBRARIES += opencrypto_static 
LOCAL_WHOLE_STATIC_LIBRARIES += openssl_static 

# define the macro to compile through support/zip_support/ioapi.c 
LOCAL_CFLAGS := -DUSE_FILE32API 
LOCAL_CPPFLAGS := -Wno-deprecated-declarations -Wno-extern-c-compat 
LOCAL_EXPORT_CFLAGS := -DUSE_FILE32API 
LOCAL_EXPORT_CPPFLAGS := -Wno-deprecated-declarations -Wno-extern-c-compat 

include $(BUILD_STATIC_LIBRARY) 

$(call import-module,freetype2/prebuilt/android) 
$(call import-module,chipmunk) 
$(call import-module,platform/android) 
#add 
$(call import-module,openssl) 

的内容现在我可以在cocos2dx使用这些库。