0

我有一个用于 Windows 的 c++ dll,它使用 postmessage 将消息传递给 FPC (Lazarus) 应用程序。这很简单,因为我是一个很简单的人。它是 Adob​​e Photoshop SDK 的一部分:

extern "C" BASICEXTERNALOBJECT_API long sendMessage(TaggedData* argv, long argc, TaggedData * retval)

{   
    // The returned value type
    retval->type = kTypeString;
    string s (argv[0].data.string);
    int i = (int)(argv[1].data.fltval); 
    retval->data.string = "Not Found";

    std::wstring stemp = s2ws(s);
        LPCWSTR win = stemp.c_str();

    HWND myApp= FindWindow(0,win);

    if (myApp != NULL){
      retval->data.string = "Found it";
      PostMessage(myApp, WM_USER + 1, i,0);

    } 
    return kESErrOK;
}

我正在努力使 Lazarus 应用程序在 OS X 上运行 - 运行良好。我现在需要在 XCODE c++ 中编译上述代码,以传递将由以下 FPC 代码接收的参数:

procedure TForm1.WndProc(var Message: TLMessage);
var
  mykey : integer;
begin
  inherited;
  case Message.Msg of
    WM_MY_MESSAGE:
      begin
        mykey := Message.WParam;
        if (mykey > 0) and (mykey < 13) then
           myActionFunction(mykey);
      end;
  end;
end; 

任何人都可以在某处指出如何在 Xcode 中完成此操作的示例吗?我敢肯定这很容易,但到目前为止谷歌并没有给我太多帮助......

4

2 回答 2

0

您是否尝试在“命令行实用程序”组中打开 C++ 工具?这样您就可以在 C++ 中构建它而无需转换它

于 2013-05-15T23:56:30.563 回答
0

您现有的源代码仅适用于 Windows。

TForm1.WndProc部分代码看起来像 Delphi 代码,而 Delphi VCL 框架仅适用于 Windows。不支持交叉编译。

在我看来,唯一可能的解决方案是从头开始重写整个应用程序。

于 2013-05-16T13:08:41.273 回答