新手跨语言:C/VB:VB6写界面,VC11写算法

作为一个新手入门的示例程序,我们用 C 写一个求两数之和(A+B Problem)的函数,然后在 VB 程序中调用它。

作为一个新手入门的示例程序,我们用 C 写一个求两数之和(A+B Problem)的函数,然后在 VB 程序中调用它。

在Visual Studio 2012建立一个Win32项目,名为ProjectName。应用程序类型选择DLL。
然后在ProjectName.cpp中写如下代码。

// ProjectName.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"

#define FUNC(x) extern "C" __declspec(dllexport) x __stdcall 

FUNC(int) SUM_(int x, int y)
{
	return x+y;
}

你可以像写普通的标准C函数一样来写这里的函数,唯一的区别是函数头前面要有一大堆关键字。我在这里使用了宏定义 FUNC(返回值类型) 简化。

extern "C" __declspec(dllexport) int/*你的返回值类型*/ __stdcall SUM_/*你的函数名*/ (int x, int y)/*你的参数列表*/

按F7键,生成ProjectName.dll。

在VB6中,建立一个标准EXE工程,在Form1中写以下代码:

Private Declare Function _
    SUM_ _
    Lib _
    "ProjectName.dll" _
    Alias _
    "_SUM_@8" _
    (ByVal x As Long, ByVal y As Long) _
    As Long

Private Sub Form_Load()
    Dim x As Integer, y As Integer, sum As Integer
    x = InputBox("请输入 x")
    y = InputBox("请输入 y")
    z = SUM_(x, y)
    MsgBox x & " + " & y & " = " & z
End Sub

Lib "ProjectName.dll":指定dll文件。建议在这里使用相对路径,把你的dll和exe放在同一目录下。
Alias "_SUM_@8":需根据C中的函数名手动修改。在__stdcall下,VC编译时会在函数名前面加一个下划线,后面加@和参数的总长度(此处是2个int,即8字节)。
ByVal x As Long:ByVal是不可少的。对应C中4字节的int,VB里是Long。

在“文件”菜单中找“生成”,生成工程1.exe。将工程1.exe和ProjectName.dll放置于同一目录下即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注