c++で作成されたdllをperlスクリプトで読み込もうとしています。
ヘッダーファイルには次のものが含まれます。
class MathsFuncs {
static __declspec(dllexport) int __stdcall add(int a, int b);
}
perlでWin32::APIを使用してこの関数をロードできないのはなぜですか?
コメントに答えるために編集します:
C++の残りの部分は次のとおりです。
// MathsFuncs.cpp
#include "MathsFuncs.h"
int add(int a, int b) {
return a+b;
}
私はこれをcygwinでコンパイルしています:
cl MathsFuncs.cpp /LD
(clはx86です)
これはdllファイルを生成します:(MathsFuncs.dll
そして他のファイルのロード.lib.expなど)
Perlスクリプトは次のとおりです。
#!/utils/bin/perl -w
use strict;
use warnings;
use Win32::API;
Win32::API->Import('MathsFuncs', 'int add(int, int)');# or die "ji\n";
print "1 + 2 = ";
print add(1,2);
print "\n";
perlpart.pl
cygwinで実行すると、次の出力が得られます。
Segmentation fault (core dumped)
そして、私はいつも同じ結果を得ます、私は私が間違っていることを見ることができません。私が行方不明になっていることは明らかです。A:dllを作成し、B:perlにdllをロードするのはこれが初めてです。
編集:私のファイルやコンパイルされた出力などはすべてここにあります(現在は少し古くなっています)が、すべての変更ソースが問題になっています