嗨,我有两个问题:
我目前正在为我需要做的一个项目学习clarion。目前,我正在考虑将scanner和clarion作为windows mobile应用程序的语言。
我遇到的第一个问题是关于clarion与第三方供应商提供的SDK的使用,例如Opticon扫描仪DLL和普通c#.net DLL,我如何在clarion中使用/访问这些DLL并在代码中调用它们。我已经做了相当多的搜索关于上述问题的答案,但找不到任何非常有用的东西。
第二个问题: Clarion可以通过clarion提供的应用程序代理和框架,通过web浏览器为windows应用程序使用普通clarion,在clarion 9中我创建了一个这样做的应用程序,但在浏览器中创建和运行该应用程序后,我立即在由clarions自生成代码创建的主屏幕上收到错误。错误是下面缺少加号的段中的“未捕获syntaxError:意外标识符”。
function icAjaxSubmit(controlValue)
{
getContent(form.action+"? @"+$('#ClarionForm').serialize()+"&"controlValue+"="+$('#'+controlValue).value);
}问题是我在互联网上找不到任何与此相关的东西,也找不到从clarion目录和应用程序目录中生成的文件,它也不在我可以注意到的项目代码本身中。
有谁可能知道关于第一个问题或第二个问题的可能解决方案?
感谢吉迪恩
发布于 2014-12-05 04:00:01
首先,让我把这个去掉。如果你可以使用除了clarion之外的任何其他语言,那就去做吧。Clarion是一个死胡同的开发平台,它不能扩展以满足企业的需求。Clarion本身缺乏很多内置功能,这意味着你要么需要花几千美元购买第三方工具,要么学习Windows API,在这一点上你也可以选择C。更不用说第三方工具经常失去支持,也不会升级到满足Clarion后续版本的需求。
但是,如果您认为有必要使用Clarion ...
来回答你的第一个问题。C# .NET dlls无法由clarion本机调用,因为.NET dlls与标准windows非托管dlls的格式不同。但是你可以通过一些小的修改来访问它们。
最好的情况是,您可以访问C# dll的源代码,在这种情况下,您可以修改源代码并实现Robert Giesecke https://www.nuget.org/packages/UnmanagedExports的非托管导出包。
使用这个包,您可以在C#库中注释要在dll中导出的特定函数,以便本机应用程序可以调用它们。
最坏的情况是您无法访问源代码的第三方C# dlls。您可以尝试遵循此指南http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI
您的第二个问题是由于语法错误造成的,此处的代码中缺少连接运算符
"&"controlValue
整个调用应该是:
function icAjaxSubmit(controlValue)
{
getContent(form.action+"?@"+$('#ClarionForm').serialize()+"&" + controlValue+"="+$('#'+controlValue).value);
}发布于 2016-05-07 17:22:14
Clarion实际上不是上面的任何一个。我不会浪费时间来解释为什么。知道为什么的人就知道为什么。回到现实。
成功调用外部DLL (例如,用Clarion以外的语言编写的那些)与在外部DLL中调用的过程/函数的原型声明有很大关系。在Clarion中,接收字符串参数并返回1的外部函数的典型原型是:
原型:
( BSTRING )、BSTRING、PASCAL、RAW、DLL(TRUE)
重要的是使用LibMaker.exe从DLL创建一个.LIB文件,通常位于Clarion的BIN文件夹中。打开DLL,并将.LIB与DLL一起保存到项目文件夹中。然后添加.LIB文件作为项目的资源之一,当您在Clarion应用程序中声明过程/函数调用时,请确保“模块”指向项目中包含的".Lib“文件。为此,您可以将视图从" procedure“切换到" module ",找到已声明的过程,并将其模块更改为指向Lib。
保存项目后,继续删除与Clarion项目关联的.MAP文件,重新打开,生成,运行。
上面提到的一点非常非常有用,那就是在您可能编写的任何.NET代码中(例如在C#中)使用“非托管导出”库,这将允许您在对.NET类库的Clarion调用之间“编组”数据类型,并返回正确的数据类型。
在将Clarion过程/函数导出为.NET (或任何其他语言)时,一定要特别注意调用应用程序中过程/函数名称的“大小写”--它必须与Clarion应用程序中声明的大小写完全匹配。
最后,不要被上面的"&“注释划过-- "&”只不过是C#或VB.NET等语言中等效的"+“连接符,真的不值得关注;要知道,你可以在DLL中导出Clarion功能,或者使用外部DLL (.NET或不),相对容易--通过(a)正确地原型(b)使用BSTRING来表示字符串(c)在调用UnmanagedEXports DLL时使用”.NET“库,(d)在使Clarion功能可用于外部语言时--如C#或Delphi.
https://stackoverflow.com/questions/22017138
复制相似问题