DLL中调用控件?没有界面的话可能只能用CoCreateInstance了吧?

解决方案 »

  1.   

    给个简单的例子好吗,我马上给分另外,以下代码编译出错#include <stdio.h>
    #include "MyNative.h"
    JNIEXPORT void JNICALL Java_MyNative_showParms0
      (JNIEnv *env, jobject obj, jstring s, jint i, jboolean b)
    {
      const char* szStr = (*env)->GetStringUTFChars( env, s, 0 );
      printf( "String = [%s]\n", szStr );
      printf( "int = %d\n", i );
      printf( "boolean = %s\n", (b==JNI_TRUE ? "true" : "false") );
      (*env)->ReleaseStringUTFChars( env, s, szStr );
    }error C2819: type 'JNIEnv_' does not have an overloaded member 'operator ->'请问,这是什么问题,如何解决,谢谢
      

  2.   

    //初始化COM Library.
    CoInitialize(NULL) ; // 创建ActiveX对象并查询想要使用的接口
    HRESULT hr = ::CoCreateInstance(CLSID_ActiveXYouNeed,
                                    NULL, 
                                    CLSCTX_INPROC_SERVER,
                                    IID_InterfaceYouWant, 
                                    (void**)&g_pI) ;
    if (FAILED(hr))
    {
              //出错处理  
    }
              //查询正确
              g_pI->DoSomething();
              ........ pIX->Release() ;
    CoUninitialize() ;CLSID_ActiveXYouNeed和IID_InterfaceYouWant分别为该ActiveX的CLSID和
    你要调用的函数所在接口的ID.可以用OLE View查到。
    如果还不明白,自己找两本COM的书看看吧JNIEnv 类没有重载->运算孵
      

  3.   


    //初始化COM Library.
    CoInitialize(NULL) ; // 创建ActiveX对象并查询想要使用的接口
    HRESULT hr = ::CoCreateInstance(CLSID_ActiveXYouNeed,
                                    NULL, 
                                    CLSCTX_INPROC_SERVER,
                                    IID_InterfaceYouWant, 
                                    (void**)&g_pI) ;
    if (FAILED(hr))
    {
              //出错处理  
    }
              //查询正确
              g_pI->DoSomething();
              ........ g_pI->Release() ;
    CoUninitialize() ;