我有一个用于Windows的c ++ dll,它使用postmessage将消息传递给FPC(Lazarus)应用程序。这是非常简单的东西,因为我是一个非常简单的人。它是adobe photshop 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中如何做到这一点的例子吗?我相信这很容易,但到目前为止谷歌并没有给我太多帮助....
答案 0 :(得分:0)
您是否尝试在“命令行实用程序”组中打开C ++工具?这样你就可以用C ++构建它而不必转换它
答案 1 :(得分:0)
您现有的源代码仅适用于Windows。
TForm1.WndProc
部分代码看起来像Delphi代码,而Delphi VCL框架仅适用于Windows。没有支持交叉编译。
在我看来,唯一可行的解决方案是从头开始重写整个应用程序。