我应该如何使用Win32 :: API加载在perl中用c ++编写的dll

时间:2012-08-24 10:56:10

标签: c++ perl dll

我正在尝试在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(现在略有过时),但所有更改源都在问题中

0 个答案:

没有答案