无法为TAO IDL生成共享dll的lib文件

时间:2013-11-01 23:02:46

标签: dll corba idl visual-c++ tao

一个IDL文件exception.idl

module project{
    exception JobCreateException{
    string errorMessage;
   };

}

部分MPC文件是:

project(idl_exception): taoidldefaults, anytypecode {
   idlflags += -GI -Wb,stub_export_macro=EXCEPTION_STUB_Export -Wb,stub_export_include=exception_stub_export.h -Wb,skel_export_macro=EXCEPTION_SKEL_Export 

-Wb,skel_export_include = exception_skel_export.h

  IDL_Files {
    exception.idl
  }
 custom_only = 1
}

  project(idl_exception_skel): naming, iortable, utils, avoids_corba_e_micro, anytypecode {
     sharedname = idl_exception_skel
      after +=  idl_exception
      Source_Files {
         exceptionS.cpp
      }
     Header_Files{
    exceptionS.h
        exceptionC.h
        exception_skel_export.h 
    }
   dynamicflags += EXCEPTION_SKEL_BUILD_DLL EXCEPTION_STUB_BUILD_DLL
 }

根据mpc文件,我想通过VC8生成一个框架DLL文件,并且.lib文件将通过服务器实现链接。

但是,编译后,成功生成了idl_exception_skel.dll文件,但没有.lib文件。

比我添加一个新结构,如:

struct myobject{
   string name;
};

在idl文件内部并重新生成全部,lib文件显示出来。

是否有任何解释为什么类型的IDL文件不能用于骨架? @Johnny Willemsen

1 个答案:

答案 0 :(得分:0)

skel库必须链接与IDL文件相关的存根库。对于存根项目,将EXCEPTION_STUB_BUILD_DLL添加到dynamicflags,对于skel项目,仅使用EXCEPTION_SKEL_BUILD_DLL。缺少lib的事实提示未解析的符号,这是由于您没有将idl_exception_stub添加到idl_exception_skel的库中而引起的。