掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++、VB、Access VBA、Excel VBAのどこからでも利用可能なDLLを作成するには? (ID:65762)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になっています。 今回、初めてDLLを作ることになりました。 で、社内からの要望が、「VC++、VB、Access VBA、Excel VBAのどこからで も利用可能」というわがままな依頼になっています。 開発環境は、WinXP + VC++ .net 2003 Enterprise、DLLを利用するプログ ラムはVB・VC++は.net 2003、Office系はOffice 2003 Enterpriseです。 とりあえず、VCで利用できる簡単なDLLを作ってみました。 以下がソースです(とりあえず動けばよかったのでかなり適当に作ってい ますが・・・) #include<windows.h> #define DllExport __declspec(dllexport) DllExport long __stdcall StringFunc(char *strInput, long lenInput, char **strOutput, long *lenOutput); DllExport long __stdcall StringFunc(char *strInput, long lenInput, char **strOutput, long *lenOutput) { if(strInput == NULL || lenInput == 0) { if(*strOutput != NULL) { delete[] strOutput; strOutput = NULL; } lenOutput = 0; return 99; } if(*strOutput != NULL) { delete[] *strOutput; *strOutput = NULL; } *lenOutput = lenInput + 16; *strOutput = new char[(size_t)(*lenOutput + 1)]; if(strOutput == NULL) { *lenOutput = 0; return 98; } strncpy(*strOutput, strInput, lenInput); strncat(*strOutput, "(test用追加)", (size_t)(*lenOutput - lenInput - 1)); //バグ防止のため、最後にNULL文字を追加 strOutput[*lenOutput - 1] = '\0'; *lenOutput = (long)strlen(*strOutput); return 0; } こんな感じです。 この関数は、引数も戻り値も、ほぼ実際に作りたい関数を想定して作りま した(基本的にはある文字列をいじって変更した文字列を取得したいだけ です)。 このままDLLをVBやAccessから読み込むと、不正なエラーでAcceessが終了 してしまったり、VBでは「'System.Security.SecurityException' のハン ドルされていない例外が system.windows.forms.dll で発生しました。 追加情報 : System.Security.Permissions.SecurityPermission」とでて しまいました。 そもそもVBやVBAでも利用できるようなDLLはVC++で作成可能なのでしょう か? また、その際の約束ごとや注意事項等が有るのであればご教授いただけな いでしょうか? 参考になるURLだけでも結構です。 漠然とした質問愛用で申し訳有りませんが、よろしくおねがいいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.