惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
U
Unit 42
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
博客园 - 司徒正美
Vercel News
Vercel News
I
InfoQ
GbyAI
GbyAI
C
Check Point Blog
B
Blog RSS Feed
Martin Fowler
Martin Fowler
B
Blog
MyScale Blog
MyScale Blog
腾讯CDC
博客园 - Franky
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)

博客园 - xalion

Delphi 13.1 内置支持 SSE (Server-Sent Events) Ubuntu 上 安装 sql server 2022 delphi 12.2 配置Linux 开发环境 Embarcadero 发布开源Bloodshed Dev C++ 分支 实战Devexpress FMX Grid 苹果体 Delphi 10.4 新功能介绍 如何在unidac 中执行一次查询获得多个数据集? 初识ubuntu上的docker PostgreSQL 基本数据类型及常用SQL 函数操作 一步一步从PostgreSQL安装到delphi 访问 DLL Injection with Delphi(转载) 使用FMXlinux 开发linux 桌面应用 推荐一套免费跨平台的delphi 哈希及加密算法库 提高sqlite 的运行性能(转载) 使用unidac 连接FB 3.0 (含嵌入版) 在datasnap 中使用unidac 访问数据(客户端) 在datasnap 中使用unidac 访问数据(服务器端) More x64 assembler fun-facts–new assembler directives(转载) x64 assembler fun-facts(转载)
在ubuntu 上使用wine 运行Delphi win32 应用
xalion · 2020-06-13 · via 博客园 - xalion

随着delphi 10.x 系列开始支持Linux 开发,我们的服务器端可以直接支持LInux 服务器了,

由于客户越来越多使用Linux 作为服务器端, 但是对于过去老的win32 下开发的服务端,一时半会还无法直接转到移植到Linux 下,我们

需要一个过渡的方法,来保证服务端满足要求。这时候需要使用wine 来实现这种转换。Wine (“Wine Is Not an Emulator” 的首字母缩写)

是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。

Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,

免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

更多关于wine 的介绍,请移步官网了解

首先,我们需要在ubuntu安装 wine。这个很简单

sudo apt install wine.

 安装完后,执行

wine --version

显示运行成功。

我们先试着运行一个kbmmw 的smartbind 例子。因为里面没有网络和数据库的功能。

在windows 下的界面为:

 把这个exe 拷入到Linux 服务器上,修改成可执行权限。

在Linux 下运行·

wine Project1.exe

非常顺利的执行了。

现在搞一下常用的比较麻烦的ADO 数据库应用程序

我们先用delphi 建立一个ado 应用程序,访问sql server 数据库

 这是一个标准的win32 ado 应用程序。在win10 下可以正常运行。

由于要使用win32 的API,我们使用标志符,说明是win32 应用

WINEARCH="win32" wine Project3.exe

 运行,出错了

 原因是没有找到ado 相关的一些API。我们需要给wine 安装ado驱动。

我们首先需要在微软官网上下载MDAC

https://www.microsoft.com/zh-cn/download/details.aspx?id=5793

 复制到linux 服务器里面

然后运行

WINEARCH="win32" winecfg

 将这个地方修改成WINDOWS NT 4.0

 点应用

然后再运行命令

WINEARCH="win32" wine MDAC_TYP.EXE

 剩下的就和windows 下一样的,一路安装下去。

 安装完,点关闭。

再次打开winecfg

WINEARCH="win32" winecfg

首先把wine 版本改回成win7

然后替换msado 函数

 ok

现在运行命令

WINEARCH="win32" wine Project3.exe

 程序跑起来了,但是,但是, 我的中文不显示了。

 我们再windows 目录找到字体文件simsun.ttc。

然后把此文件复制到当前用户的.wine 目录,注意这个目录是一个隐藏目录。

 

 注意上面的路径。

现在我们再次运行

 完美运行起来了。

当然此处建议win32 的数据库驱动选择使用unidac.使用直连方式,就不用这么复杂了。

使用unidac 直连方式,就不需要上面的复杂配置,也不用显式指明wine 的运行模式。直接实现了wine 的开箱即用,复制过来就可以运行。

命令更简单了。

wine Project3unidac.exe 

 

 使用wine 运行windows 的应用程序,可以让老程序运行在linux 下,但是开发新的桌面程序,还是建议使用Delphi FMX,这样一套代码

和界面可以直接运行在windows、Linux、macos 上。