我正在尝试在 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
(分类是 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
编辑:我所有的文件和编译的输出等都在这里(现在稍微过时了),但是所有的更改源都在问题中