GDB debug setting for lazarus

GDB_on_OS_X_Mavericks_or_newer_and_Xcode_5_or_newer

Codesigning gdb

https://sourceware.org/gdb/wiki/BuildingOnDarwin#Method_for_Mac_OS_X_10.5_.28Leopard.29_and_later

Mac(os x)下使用gdb的问题

codesign 之后,运行出现

sudo codesign -fs gdb-cert /usr/local/bin/gdb

The GDB command:
"-gdb-set confirm off"
did not return any result.

终端执行gdb

dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.6.dylib
Referenced from: /usr/local/bin/gdb
Reason: image not found
[1] 25803 trace trap gdb

参考:
cannot run gdb on mac's terminal even after codesign

build gdb from source

  1. download source from
    ftp://sourceware.org/pub/gdb/releases/
  2. build

    ./configure
    make
    sudo make install

    build error

probe.c:63:28: error: default initialization of an object of const type 'const any_static_probe_ops' without a user-provided default

https://news.ycombinator.com/item?id=16275140

fixed: remove const

- const any_static_probe_ops any_static_probe_ops;
+ any_static_probe_ops any_static_probe_ops;

CodeTyphon version 1.70 released

CodeTyphon是一个lazarus的集成mod版本,集成了许多的第三方控件,1.70版本已经发布,可以发现,lnet和indy等库已经移植到wince了,不用担心wince下网络库的缺乏了。

changed log:

======> 22-May-2011 ver 1.70 =================================================

   -ADD pl_Graphics32VPR ,Vectorial Polygon Rasterizer for Graphics32 (Win32, Win64, WinCE)
   -ADD pl_BGRAcontrols  ,Visual Components for pl_BGRAbitmap library (Win32, Win64, Linux32, Linux64, WinCE) 
   -ADD pl_pl_ZenGLD3D   ,ZenGL library for DirectX  (Win32, Win64)

   -Rename/Update pl_mooncomp to pl_GeoGIScomp (Win32, Win64, WinCE, Linux32, Linux64) 

   -Update/Fix pl_freefpider 
   -Update pl_Synapse      (SVN 20-5-2011)
   -Update pl_BGRAbitmap   (SVN 20-5-2011)
   -Update pl_ZenGL        (SVN 20-5-2011) 
   -Update pl_GLScene      (SVN 22-5-2011)
   -Update pl_LNetComp     (SVN 20-5-2011)
   -Update pl_KambiEngine  (SVN 20-5-2011)
   -Update pl_LNetComp     (SVN 20-5-2011) 
   -Update pl_FortesReport (SVN 20-5-2011)
   -Update pl_OpenWire     (SVN 20-5-2011)

   -Port pl_Graphics32 to WinCE
   -Port pl_Synapse to WinCE
   -Port pl_lNet to WinCE
   -Port pl_Indy to WinCE
   -Port pl_VisualPlanIt to WinCE
   -Port pl_APE to WinCE
   -Port pl_DCP to WinCE
   -Port pl_FreeSpider to WinCE
   -Port pl_PowerPDF to WinCE
   -Port pl_OpenWire to WinCE

   -Port pl_GLScene to Linux32 and Linux64 (Manual installation to Lazarus IDE for Linux)
   -Port pl_KambiEngine to Linux32 and Linux64 (Manual installation to Lazarus IDE for Linux)    
   

NOTE:  Lazarus 0.9.31   Source from SVN 22-05-2011 Rev 30845
       FreePascal 2.5.1 Source from SVN 19-05-2011 Rev 17500

继续阅读

编程调用的mplayer的colorkey设置

Lazarus中调用mplayer播放有个很重要的问题,就是当视频输出为directx时,会无法在panel或者窗体上显示。

原来,这个关系到mplayer的一个参数colorkey,一般调用时传递一个-colorkey 0x101010,然后呢,设置相应的显示视频的窗体颜色为$00101010,这样,窗体就会正常显示视频了。如果colorkey设置为普通的颜色,比如说黑色或者白色,那么许多通常的窗体,都可以看到视频,变成视频有某种透明的效果了。所以,colorkey还是要设置为比较少用的颜色。

lazarus中调用mplayer播放视频

mplayer是一个全能的媒体播放器,在Linux上是鼎鼎大名的,不用多说了,Windows上,现在也是多了很多的基于mplayer的播放器。个人比较喜欢的是smplayer,跨平台的,也是简洁大方。

要在编程中,使用mplayer播放视频,首先要有mplayer的运行库,就是rtm,可以从官方网站下载。解压后的目录结构如下,要包含有可执行的mplayer.exe。

image

然后,使用在project中包含以下文件:cmplayer.pas

继续阅读

在Lazarus和Delphi上使用firefox的gecko内核控件

一般,在delphi上,使用的都是TWebBrowser的IE内核的控件,使用很方便,直接把控件拖到窗体上就行了。但是,在跨平台的时候,就无能为力了。这时候,Lazarus+firefox是个更好的选择。下面,讨论一下,怎么在Lazarus上使用firefox内核打开网页。

首先:准备工作,需要一个firefox的运行库,和一个Lazarus的控件。

1.运行库,就是xulrunner,可以在mozilla的ftp上下载,最新的稳定版上1.9.4,针对不同的平台,有不同的文件。我们就下载win32的sdk文件 xulrunner-1.9.1.4.en-US.win32.zip

image

2.就是Lazarus的控件geckoport

迅雷下载

千脑下载

继续阅读

Lazarus编译RemObjects_Core_Lazarus_Windows.lpk出现错误

用Lazarus编译RemObjects_Core_Lazarus_Windows.lpk出现如下错误的:

RemObjects6RemObjects SDK for DelphiSourceuROXMLSerializer.pas(427,30) Error: Illegal type conversion: "Extended" to "Comp"
  PComp(@ft)^ := {$IFDEF FPC}comp{$ENDIF}((aDateTime – FileTimeBase) * FileTimeStep);

改成:

  PComp(@ft)^ := ((aDateTime – FileTimeBase) * FileTimeStep);

编译成功

【转自】用Lazarus编译RemObjects_Core_Lazarus_Windows.lpk出现如下错误的 |Demos and FAQs – Lazarus中文社区

lazarus 使用Delphi的dll导出类的问题

Delphi的DLL导出类的方法,无外乎就是利用TClass的特性,就是,定义要导出类的Class类,即比如说,要导出的类是TMyObject,那么就定义

TMyObjectClass=class of TMyObject

在导出函数里面,使用TMyObjectClass变量,可以在参数里面使用var或者直接返回。

类似于

function GetMyObject(var MyClass:TMyObjectClass):Boolean;stdcall;

或者

function GetMyObject:TMyObjectClass;stdcall;

在Lazarus里面,声明函数为

type
 TGetMyClass = function(var MyClass:TMyObjectClass):Boolean ; stdcall; 

使用方法

继续阅读

lazarus的串口控件SynaSer

记录一个lazarus的串口控件SynaSer serial library

支持win32和Linux,可惜不支持wince

主要是Synapse TCP/IP library控件,用于delphi。

简单使用方法,算是有点怪异的。

var
  ser:TBlockSerial;
begin
  ser:=TBlockserial.Create;
  try
    ser.RaiseExcept:=True;
    ser.Connect(‘COM2’);
    ser.Config(19200,8,’N’,0,false,false);
    writeln (ser.ATCommand(‘ATI8’));
  finally
    ser.Free;
  end;
end.

下载

lazarus 奇怪的“compilation aborted”错误

今天编译一个lazarus的项目,发现只要编译,就会出现

xxxx.pas(1,1) Fatal: Compilation aborted

没有其他的错误指示。

在尝试替换ide,都发生相同的错误后,可以确定错误在pas文件里面。

经过比对之前的代码,发现在添加了如下代码后出现编译错误

property Device:TDevice index m_Device read GetDevice;

在delphi里面,这就是一个index属性的声明,可是,fpc里面,就会发生编译错误。

后,参考fpc的语法,正确的index属性声明应为:

property Device[AIndex:integer]: TDevice read GetDevice;

修改后,编译一切顺利。

记之。