2013-11-01 27 views
0

一個IDL文件exception.idl無法生成共享的DLL庫文件爲TAO 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 
} 

Accor ding爲mpc文件,我想通過VC8生成一個骨架DLL文件,並且.lib文件將通過服務器實現進行鏈接。

但是,編譯後,idl_exception_skel.dll文件已成功生成,但沒有.lib文件。

比我添加一個新的結構,如:

struct myobject{ 
    string name; 
}; 

IDL文件裏,並重新生成所有的庫文件顯示出來。

是否有任何解釋什麼樣的IDL文件不能爲骨架? @Johnny Willemsen

+0

skel庫必須鏈接到與IDL文件相關的存根庫。對於存根項目,將EXCEPTION_STUB_BUILD_DLL添加到動態標誌,因爲skel項目只使用EXCEPTION_SKEL_BUILD_DLL。事實上,lib缺少未解決符號的提示,這是由於您未將idl_exception_stub添加到idl_exception_skel的庫中導致的。 –

+0

謝謝@JohnnyWillemsen,我解決了它.. –

回答

0

skel庫必須鏈接到與IDL文件相關的存根庫。對於存根項目,將EXCEPTION_STUB_BUILD_DLL添加到動態標誌,因爲skel項目只使用EXCEPTION_SKEL_BUILD_DLL。事實上,lib缺少未解決符號的提示,這是由於您未將idl_exception_stub添加到idl_exception_skel的庫中導致的。