こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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登録や参照登録などができません。

何でも良いのでコメント書いていただければと思います。
大雑把な質問で申し訳ないですが、宜しくお願いいたします。

投稿日時 - 2008-10-24 20:34:04

QNo.4426875

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2008-10-25 08:16:38

お礼

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

投稿日時 - 2008-10-29 17:44:16

ANo.1

肝心の"xxxxx.dll"が何か判ればほぼ確定なんですが…

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

投稿日時 - 2008-10-24 22:24:33

お礼

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

投稿日時 - 2008-10-27 00:40:34

あなたにオススメの質問