Pascal Lazarus在Windows上编译程序后引发异常类

Pascal Lazarus在Windows上编译程序后引发异常类,pascal,lazarus,Pascal,Lazarus,我用Lazarus Pascal编写了程序。它完全是在Mac上编写的,然后我切换到windows,重新编译它(将.dylib重新编译为.dll,重新编译并安装自定义组件),然后它运行,但当我尝试执行任何操作时,它会抛出错误: 在调试模式下: Project project1引发异常类“External:SIGSEGV”。地址为772CD4F1 正在运行.exe文件: 访问冲突。 //编辑 我注意到这部分代码有问题,尤其是在列表视图中。清除命令: procedure AddressList.upd

我用Lazarus Pascal编写了程序。它完全是在Mac上编写的,然后我切换到windows,重新编译它(将.dylib重新编译为.dll,重新编译并安装自定义组件),然后它运行,但当我尝试执行任何操作时,它会抛出错误:

在调试模式下:

Project project1引发异常类“External:SIGSEGV”。地址为772CD4F1

正在运行.exe文件:

访问冲突。

//编辑

我注意到这部分代码有问题,尤其是在
列表视图中。清除
命令:

procedure AddressList.updateView(ListView : TListView);
var
  element : ListElement;
  newItem : TListItem;
begin
  ListView.Clear;

  element := first;

  if element = nil then
    exit;

  while element <> nil do
  begin
    newItem := ListView.Items.Add;
    newItem.Caption := element^.name;
    newItem.SubItems.Add(element^.surname);
    newItem.SubItems.Add(element^.address);
    newItem.SubItems.Add(formatNumber(element^.phoneNumber));

    element := element^.next;
  end;

end;
procedure AddressList.updateView(ListView:TListView);
变量
元素:ListElement;
新项目:TListItem;
开始
ListView.Clear;
元素:=第一;
如果元素=nil,则
出口
而元素nil do
开始
newItem:=ListView.Items.Add;
newItem.Caption:=元素^.name;
newItem.SubItems.Add(元素^.姓氏);
newItem.SubItems.Add(element^.address);
添加(formatNumber(元素^.phoneNumber));
元素:=元素^.next;
结束;
结束;

这怎么可能,我会做错什么呢?

在免费的Pascal类中,实例总是隐式指针

由于某种原因,
ListView
似乎不包含正确创建的类实例。“指针”
ListView
指向任何地方。当class方法
Clear
尝试访问数据时,会出现分段错误


查看
列表视图
应该显示垃圾数据或免费Pascal类中的
,实例总是隐式指针

由于某种原因,
ListView
似乎不包含正确创建的类实例。“指针”
ListView
指向任何地方。当class方法
Clear
尝试访问数据时,会出现分段错误


查看
列表视图
应该显示垃圾数据或免费Pascal类中的
,实例总是隐式指针

由于某种原因,
ListView
似乎不包含正确创建的类实例。“指针”
ListView
指向任何地方。当class方法
Clear
尝试访问数据时,会出现分段错误


查看
列表视图
应该显示垃圾数据或免费Pascal类中的
,实例总是隐式指针

由于某种原因,
ListView
似乎不包含正确创建的类实例。“指针”
ListView
指向任何地方。当class方法
Clear
尝试访问数据时,会出现分段错误


查看
列表视图
应该显示垃圾数据或

第一个
来自哪里?动态链接库?它看起来像一个单独列出的列表。你试过调试吗?(使用堆栈跟踪查找错误的来源)。您是否尝试调试dll(对于dll:运行参数,定义主机应用程序,以便可以与源代码同步调试)?@BBaz首先来自AddressList类。我注意到,当我将
ShowMessage
放在
ListView之前。清除
之后,只有在消息显示之前,才会发生错误。我不认为它与.dllTry有什么关系,先在没有DLL的情况下调试它,然后把它编译成一个应用程序?动态链接库?它看起来像一个单独列出的列表。你试过调试吗?(使用堆栈跟踪查找错误的来源)。您是否尝试调试dll(对于dll:运行参数,定义主机应用程序,以便可以与源代码同步调试)?@BBaz首先来自AddressList类。我注意到,当我将
ShowMessage
放在
ListView之前。清除
之后,只有在消息显示之前,才会发生错误。我不认为它与.dllTry有什么关系,先在没有DLL的情况下调试它,然后把它编译成一个应用程序?动态链接库?它看起来像一个单独列出的列表。你试过调试吗?(使用堆栈跟踪查找错误的来源)。您是否尝试调试dll(对于dll:运行参数,定义主机应用程序,以便可以与源代码同步调试)?@BBaz首先来自AddressList类。我注意到,当我将
ShowMessage
放在
ListView之前。清除
之后,只有在消息显示之前,才会发生错误。我不认为它与.dllTry有什么关系,先在没有DLL的情况下调试它,然后把它编译成一个应用程序?动态链接库?它看起来像一个单独列出的列表。你试过调试吗?(使用堆栈跟踪查找错误的来源)。您是否尝试调试dll(对于dll:运行参数,定义主机应用程序,以便可以与源代码同步调试)?@BBaz首先来自AddressList类。我注意到,当我将
ShowMessage
放在
ListView之前。清除
之后,只有在消息显示之前,才会发生错误。我不认为它与.dllTry有什么关系,先在没有DLL的情况下调试它,将它编译成一个应用程序。谢谢你的回答。幸运的是,我不需要这样做,因为我发现我只能在Mac上做。无论如何,谢谢你。谢谢你的回答。幸运的是,我不需要这样做,因为我发现我只能在Mac上做。无论如何,谢谢你。谢谢你的回答。幸运的是,我不需要这样做,因为我发现我只能在Mac上做。无论如何,谢谢你。谢谢你的回答。幸运的是,我不需要这样做,因为我发现我只能在Mac上做。无论如何,谢谢你。