0

我正在尝试在 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

编辑:我所有的文件和编译的输出等都在这里(现在稍微过时了),但是所有的更改源都在问题中

4

0 回答 0