none
#import Excel2003 でリンクエラー RRS feed

  • 質問

  •  Win32 DLL プロジェクトで、Excel2003に接続するために、 

    #include <comdef.h>

    #import "C:\Program Files\Common Files\Microsoft Shared\office11\mso.dll" \
     rename("DocumentProperties", "DocumentPropertiesXL") rename("RGB", "RBGXL")
    #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6ext.olb"
    #import "C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" \
     rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") \
     rename("DocumentProperties", "DocumentPropertiesXL") \
     rename("ReplaceText", "ReplaceTextXL") rename("CopyFile", "CopyFileXL") \
     no_dual_interfaces

    の様に書いたのですが、下記3つのリンクエラーが出てしまいます。
    何か設定等足りないのでしょうか?
    ご存じの方、ご教授ください。。。

    DllMain.obj : error LNK2019: 未解決の外部シンボル "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z) が関数 "public: __thiscall _variant_t::_variant_t(char const *)" (??0_variant_t@@QAE@PBD@Z) で参照されました。

    DllMain.obj : error LNK2019: 未解決の外部シンボル "char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)" (?ConvertBSTRToString@_com_util@@YGPADPA_W@Z) が関数 "public: char const * __thiscall _bstr_t::Data_t::GetString(void)const " (?GetString@Data_t@_bstr_t@@QBEPBDXZ) で参照されました。

    DllMain.obj : error LNK2019: 未解決の外部シンボル "long __cdecl _com_dispatch_method(struct IDispatch *,long,unsigned short,unsigned short,void *,wchar_t const *,...)" (?_com_dispatch_method@@YAJPAUIDispatch@@JGGPAXPB_WZZ) が関数 "public: class _com_ptr_t<class _com_IIID<struct Excel::Range,&struct __s_GUID const _GUID_00020846_0000_0000_c000_000000000046> > __thiscall Excel::Range::GetColumns(void)" (?GetColumns@Range@Excel@@QAE?AV?$_com_ptr_t@V?$_com_IIID@URange@Excel@@$1?_GUID_00020846_0000_0000_c000_000000000046@@3U__s_GUID@@B@@@@XZ) で参照されました。

    2006年2月2日 2:04

すべての返信

  • ConvertStringToBstr / ConvertBstrToStringは comsupp.libを使うように指示しないといけないようです

    #include <comutil.h>
    #pragma comment(lib,"comsupp.lib")

     

    Excel::Range::GetColumnsは不明です ...

    2006年2月2日 17:28
  • 返信ありがとうございます!

    やってみましたが、やはりリンクエラーがでます。。。

    Excel::Range::GetColumnsの方は、解決しました。
    元々VC++6のプロジェクトをVC2005Expressに変換していたの
    ですが、VC2005で新規にプロジェクトを作って、ソースコードのみ
    コピーしたら無くなりました。

    もうちょっと研究します。
    ありがとうございます。

    2006年2月3日 2:01
  • comsuppw.lib にリンクすれば解決するはずです。
     
    C:\Program Files\Microsoft Visual Studio 8\VC>bin\dumpbin.exe /symbols lib\comsu
    ppw.lib | findstr
    ?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z
    016 00000000 SECT7  notype ()    External     | ?ConvertStringToBSTR@_com_util@@
    YGPA_WPBD@Z (wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *))
    024 00000000 SECT9  notype       Static       | __sehtable$?ConvertStringToBSTR@
    _com_util@@YGPA_WPBD@Z
     
    C:\Program Files\Microsoft Visual Studio 8\VC>
    2006年2月3日 19:45
  • wchar_tですから ワイド版のライブラリーじゃないといけませんでしたね m(__)m

    2006年2月5日 1:39
  • redfox63さん、Keijiさん、うまく行きました!!
    勉強になりました。ありがとうございました!

     

    2006年2月6日 7:41