论坛风格切换切换到宽版
  • 8816阅读
  • 23回复

帮忙看一下为什么会出现Can't import DLL,谢谢 [复制链接]

上一主题 下一主题
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 10 发表于: 2015-08-10
回 8楼(gnatix) 的帖子
你修改你要导入函数的代码:
[Code]
function MyDllFunc3(lpText1, lpText2, lpCaption: String) : integer;
  external 'MyDllFunc@files:MyDll.dll stdcall';
//  external 'MyDllFunc3@files:MyDll.dll stdcall';
//function MyDllAT : integer;
//  external 'MyDllAT@files:MyDll.dll stdcall';

---------------------------------------------
回复上面:
老虎版本,我试了,不行,一到输入序列号的界面就会崩溃?



INNO 帮助文件中有专门讲 Unicode 版本的内容,你可以系统地看看。

发现楼主的诸多问题的原因是自己对 INNO 的代码还不熟悉,而直接把 ANSI 版本的代码用到 Unicode 版本下出现的问题,所以楼主是否可以考虑一下是否一定有必要用 Unicode 版本的 INNO。在目前对代码还不熟悉,而又必须直接套用第三方代码的情况下,使用 ANSI 版本的 INNO 出现错误的可能性要小些,因为论坛上的大多数示例代码都是在 ANSI 版本下的。  

关于什么情况下用 Ansi 版本或者 Unicode 版本,请参看:
http://bbs.hanzify.org/read-htm-tid-98317-ds-1-page-1.html

---------------------------------------------
回复上面:
恩,只知道把Char 转换成PAnsiCHar,和下面这个知道

#ifdef Unicode
#define A "W"
#else
#define A "A"
#endif
谢谢老虎版主的讲解。




另外,最近只是把一些收集的脚本测试整理出来,由于只学会套用,一些简单的问题自己还能纠正,遇到 CODE 段的问题就头疼
http://rghost.net/8CxTxyCRc



上面这个chm文档是2014.12-2015.1整理的,很多问题,也不知道怎么归类,最近重新整理,也很乱,所以把所有自己不懂的就发上来求助了





离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 11 发表于: 2015-08-11
关于“一到输入序列号的界面就会崩溃”:
我只是帮助你解决脚本不能编译的问题。至于你那个 MyDLL.dll 文件本身的问题我不能帮你解决,因为我不了解这个 dll 文件,不知道它的来历,也不知道它的用法。你是从哪里搞到这个文件的,最好从那里去了解更多的信息。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 12 发表于: 2015-08-11
回 11楼(gnatix) 的帖子
gnatix:关于“一到输入序列号的界面就会崩溃”:我只是帮助你解决脚本不能编译的问题。至于你那个 MyDLL.dll 文件本身的问题我不能帮你解决,因为我不了解这个 dll 文件,不知道它的来历,也不知道 .. (2015-08-11 04:36) 

谢谢老虎版主的解答,有更简单的方法解决了。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 13 发表于: 2015-08-11
回 8楼(gnatix) 的帖子
gnatix:我检查了你这个 Mydll.dll 文件,它只有一个导出函数,而且名称是 MyDllFunc。而你非要从它那里导入 MyDllFunc3 和 MyDllAT 这两个函数,所以出现不能导入的出错信息。你修改你要导入函数的代码:fun .. (2015-08-09 23:40) 

谢谢老虎版主用心的解答,我用这个方法修正了几个脚本,挺管用的
离线missyou

发帖
5
金钱
50
威望
5
只看该作者 14 发表于: 2015-08-11
请教虎版:为何我用您给的代码,MAC地址无显示?
离线missyou

发帖
5
金钱
50
威望
5
只看该作者 15 发表于: 2015-08-11
回 11楼(gnatix) 的帖子
请教虎版,为何用您一模一样的代码,我的mac地址没有显示呢?
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 16 发表于: 2015-08-11
回 15楼(missyou) 的帖子
missyou:请教虎版,为何用您一模一样的代码,我的mac地址没有显示呢? (2015-08-11 14:22) 

打包dll文件没
离线missyou

发帖
5
金钱
50
威望
5
只看该作者 17 发表于: 2015-08-11
回 16楼(546242502) 的帖子
546242502:打包dll文件没[表情] (2015-08-11 16:28) 

打了呢,代码是这样的:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=G:\办公软件\ha_innosetup5503_skygz\改加密测试
OutputBaseFilename=界面mac地址显示
[Files]
Source: G:\办公软件\ha_innosetup5503_skygz\IKG测试\ISID.dll; DestDir: {sys}\ISID; Flags: dontcopy

[Code]
function GetMACAddress(output: String): Integer;
external 'GetMACAddress@files:ISID.dll stdcall';

function GetMacAdd: string;
var
ClassName: String;
Ret: Integer;
begin
SetLength(ClassName, 256);
Ret := GetMacAddress(PChar(ClassName));
Result := Copy(ClassName, 1 , Ret);
end;

procedure InitializeWizard();
var
labMacAdd: TLabel;
begin
WizardForm.WelcomeLabel2.Height := ScaleY(200);
labMacAdd := TLabel.Create(WizardForm);
with labMacAdd do
begin
Parent := WizardForm.WelcomePage;
Caption := 'MAC 地址: ' + GetMacAdd;
Transparent := False;
Left := ScaleX(174);
Top := ScaleY(280);
Width := ScaleX(120);
Height := ScaleY(12);
end;
end;
离线19880313

发帖
83
金钱
770
威望
77
只看该作者 18 发表于: 2015-08-12
回 12楼(546242502) 的帖子
546242502:谢谢老虎版主的解答,有更简单的方法解决了。 (2015-08-11 12:45) 

楼主能否发一下解决后的脚本?感谢。
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 19 发表于: 2015-08-12
回 17楼(missyou) 的帖子
脚本参考: MAC网卡物理地址.zip (490 K) 下载次数:11
如果你是 ANSI 版本的话,应该没问题