我正在尝试在perl脚本中加载用c ++创建的dll。
头文件包含:
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";
当我在cygwin中运行perlpart.pl
时,我得到了输出:
Segmentation fault (core dumped)
我总是得到同样的结果,我看不出我做错了什么。有什么明显的东西让我失踪了。这是我第一次尝试A:创建一个dll,而B:在perl中加载一个dll
编辑:我的所有文件和编译输出等都是here(现在略有过时),但所有更改源都在问题中