最近Excel 1016、Excel2016にOffice365、vs2015コミュニティが追加された新しいPCにアップグレードされました。 defファイルにエクスポートされた関数が1つのみの非常に単純なvC++ dllを構築しました。コードは非常にシンプルですが、ここに投稿してコンテンツを提供し、そこに問題がないことを確認します。Excel 2016 VBAがvs2015を呼び出すのに失敗しました。C++ dll
//also tried __declspec(dllexport) double sumCPP(double a, double b) without .def file
double __stdcall sumCPP(double a, double b)
{
return a + b;
}
'VBA
Public Declare PtrSafe Function sumCpp Lib "C:\MyTestProject\x64\Debug\DllTest.dll" (ByVal a As Double, ByVal b As Double) As Double
しかし、VBAからの呼び出しが実行時エラー '48' の結果:ファイルが見つかりません:C:\ MyTestProject \ x64の\デバッグ\ DllTest.dll。
より複雑なdllプロジェクトのソースコードは、正常に動作するexeファイルに作成できますが、dllはdllの問題を呼び出すこの元の失敗を促します。どのような提案を見るべきか?私は、多くのおそらく間違ったアラームとdumpbin /扶養家族とdepends.exeを試しましたが、結果を使用する方法を明確にしていません。私はこれがシステムPATHではなく再配布可能なvs2015に関連しているのだろうかと思います。私はそこには何も見ていないが、あまりにも多くあるように、まだそれらを追加しようとしていない。
vC++ dllを使用する以外に、重い計算とTCP/IPソケットを委譲する他のオプションはありますか?私は分かりませんが、C#を考えることができますが、Pythonが優先されます。これらのdll関数はVBAで何度も呼び出されることを意図しているので、vC++ exeへのシステムコールは効率的ではないようです。
事前に感謝します!
1.テスト関数のシグネチャが異なるため、機械2.解除モードを開発3.Check上のdllこの:Excelはx64およびDLLですx86ですか?またはExcelがx86で、dllがx64ですか? – neohope