68076


VBA から (Strawberry Perlに入っている) GCC で作る関数 (DLL) を呼び出したいのですが、何から調べれば良いですか？  
ご指導よろしくお願いします。


CC BY-SA 4.0
2020-06-27T04:10:27.500
68049
2020-06-28T11:35:10.343
2020-06-28T11:35:10.343
3060
40839
question
vba gcc dll
VBA から (Strawberry Perlに入っている) GCC で作る関数 (DLL) を呼び出したい


Strawberry Perlに同梱されているgccはMinGW-w64のようなので、その辺のキーワードで検索した記事が参考になるでしょう。

[mingw-w64 GCC for Windows 64 & 32 bits](http://mingw-w64.org/doku.php)

> Some Projects using Mingw-w64
>
>   * [Strawberry Perl (bundles C toolchains)](http://strawberryperl.com/)
>

単に最小限のソースからDLLを作って呼べるように試したプロジェクト例  
[rdinse/MSAccessSQL_DLL.md](https://gist.github.com/rdinse/0696f2cd3509a01237e5c3385dc54869)

少し古いかもな記事  
[VB6, VBA の文字列 String を返す
DLLを作成する](https://happynow.hateblo.jp/entry/20130825/1377404951)

32bit版での記事  
[DLL compiled from C source code. Not able to use in excel VBA. File not found
error](https://stackoverflow.com/q/30265036/9014308)

実は解決していない記事  
[Using MinGW gcc to create DLLs for VBA 64
bit](https://stackoverflow.com/q/59110111/9014308)  
[Unable to run C coded DLL in Excel
VBA](https://stackoverflow.com/q/61309881/9014308)

こちらはVBAではなくVisual Basic向けですが。  
[Visual Basic DLL | MinGW](http://www.mingw.org/wiki/Visual_Basic_DLL)  
[Compile a DLL in C/C++, then call it from another
program](https://stackoverflow.com/q/847396/9014308)

上記でExcelから呼べた記事  
[Excel won't load function from C++
DLL](https://stackoverflow.com/q/11403981/9014308)

参考:VisualStudio系での記事  
[DLLを作成してみる（その1）](http://dorapanda.asablo.jp/blog/2013/02/24/6729220)  
[1章：DLLの作成方法とVBAから呼び出し方法](http://skomo.o.oo7.jp/f46/hp46_1.htm)  
[ExcelのVBAで使えるDLLを、C++（Visual Studio
2017）で作る。・・・その１](https://z1000s.hatenablog.com/entry/2018/04/15/213852)

* * *

他には上記記事にも一部書かれていますが、VBA側の知識も必要でしょう。

DLLの関数をどう定義してどう呼び出すか、パラメータや戻り値は、といったことが説明されています。  
[Excel で DLL にアクセスする](https://docs.microsoft.com/ja-jp/office/client-
developer/excel/how-to-access-dlls-in-excel)

上記を含む開発キット(VisualStudio用?)の先頭ページ  
[Excel ソフトウェア開発キットへようこそ](https://docs.microsoft.com/ja-jp/office/client-
developer/excel/welcome-to-the-excel-software-development-kit)

DLL経由でなくてもAPIを呼べたりしますが、方法とか(64bit時の)注意事項とか。  
[VBAでWinAPI32を使うためのリンク集](https://qiita.com/Q11Q/items/16862ef1797e25cbadfd)


CC BY-SA 4.0
2020-06-28T07:52:50.463
68076
2020-06-28T07:52:50.463
26370
68049
answer