unitUnit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,
StdCtrls;
type
TForm1=class(TForm)
Button1:TButton;
Edit1:TEdit;
Edit2:TEdit;
Edit3:TEdit;
Label1:TLabel;
Label2:TLabel;
procedureButton1Click(Sender:TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
functionAdd(a:Integer;b:Integer):Integer;stdcall;external'Dll1.dll';
var
Form1:TForm1;
implementation
{$R*.dfm}
procedureTForm1.Button1Click(Sender:TObject);
begin
Edit1.Text:=IntToStr(Add(3,6));//这样就失败为什么?
//Edit3.Text:=IntToStr(Add(StrToInt(Edit1.Text),StrToInt(Edit2.Text)));//这样就成功
end;
end.
代码如上图
就是简单的加法,不知道为什么第一种写法就出错,第二种就没事儿,请大佬解释下,谢谢
//pch.h:这是预编译标头文件。
//下方列出的文件仅编译一次,提高了将来生成的生成性能。
//这还将影响IntelliSense性能,包括代码完成和许多代码浏览功能。
//但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
//请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
#ifndefPCH_H
#definePCH_H
extern"C"_declspec(dllexport)intAdd(inta,intb);
extern"C"_declspec(dllexport)intSub(inta,intb);
//添加要在此处预编译的标头
#include"framework.h"
#endif//PCH_H
//pch.cpp:与预编译标头对应的源文件
#include"pch.h"
//当使用预编译的头时,需要使用此源文件,编译才能成功。
intAdd(inta,intb)
{
returna+b;
}
intSub(inta,intb)
{
returna-b;
}
分 -->
|