求教:关于调用msscript.ocx的问题
我使用
#import "msscript.ocx" rename_namespace("MSScriptControl")
using namespace MSScriptControl;
进行声明,方法中
char * wrapEval(char * test)
{
IScriptControlPtr pScriptControl;
pScriptControl.CreateInstance(__uuidof(ScriptControl));
pScriptControl ->Language = "VBScript";
_variant_t outpar = pScriptControl -> Eval(_bstr_t("1+4*5"));
_bstr_t bstrReturn = (_bstr_t)outpar;
char *pResult = (char *)bstrReturn;
return pResult;
}
可以正常加载得到正确的IScriptControlPtr指针,但是在使用java中的jni进行封装后
JNIEXPORT jstring JNICALL Java_WrapEval_wrapEval
(JNIEnv *env, jobject obj, jstring str)
{
const char* szStr = env->GetStringUTFChars(str, 0 );
//---中间的是一样的
IScriptControlPtr pScriptControl;
pScriptControl.CreateInstance(__uuidof(ScriptControl));
pScriptControl ->Language = "VBScript";
_variant_t outpar = pScriptControl -> Eval(_bstr_t(szStr));
_bstr_t bstrReturn = (_bstr_t)outpar;
char *pResult = (char *)bstrReturn;
//-------------------------------
jstring js = env -> NewStringUTF(pResult);
return js;
}
这个pScriptControl一直为空,这里是封装成一个dll提供的,没法正确加载,是不是ocx的加载还有一些什么要求之类的?为什么相同的代码,相同的运行环境,却不能正确加载?