• 締切済み

vc++ dll excel vba

c++で作成したdllをexcel(vba)で使用する時エラー発生 >>>vs2005 vc++で作成したプロジェクト(プロジェクトはWindowフォームアプリケーションでフォームを使ってあるdllファイルからデータを読み出しポップアップ形でデータを表示する)をdllにした後、作られたdllをexcelに連結し読み出しボタンを押すとdllが実行されるようになっています。 問題はvisual studioがインストールされているパソコンではうまくいくのですが、vsがインストールされてないパソコンで実行すると "実行エラー'53':" "ファイルが見つかりません:xxxxx.dll" が表示され終了されてしまいます。 >>excelのvbaは "Private Declare Function test_func Lib "xyxyxy.dll" Alias "#1" (ByVal test As Integer) As Integer" >>c++のdll作成のほうは "[STAThreadAttribute] __declspec(dllexport) char __stdcall test_f(int dialog_no)" になってます。 ちなみにお客さんのパソコンを使ってテストしているためpath登録や参照登録などができません。 何でも良いのでコメント書いていただければと思います。 大雑把な質問で申し訳ないですが、宜しくお願いいたします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Libの後のDLLの指示をファイル名だけでなくフルパスで指定してみてはいかがでしょう

karaofdec
質問者

お礼

フルパスにしてみたのですが、出来ません。 パスの問題じゃないと思われます。

回答No.1

肝心の"xxxxx.dll"が何か判ればほぼ確定なんですが… DLLをビルドするときにランタイムライブラリを動的リンクする設定でビルドされている可能性が高いです。 この場合MSVCRT??.DLL(??はビルド環境に依存)等のランタイムライブラリDLLが実行パス含まれていないと起動できません。 プロジェクト設定にランタイムライブラリの項目があるので確認してみたらどうでしょう?。 「(DLL)」を含まないよう項目に変更してビルドすれば静的リンクされるため単独で動きます。

karaofdec
質問者

お礼

お答えありがとうございました。 しかし、ランタイムライブラリを多重スレッド(MT)にするとエラーが出ます。mtと/clrオプションが互換できないって言うエラーです。 どうすれば良いか分からなくて困ってます。