在VS中用C++写的控件,工作起来没有问题,转换成go语言后不能工作,只能获取行数,不能获取内容,百思不得解。将C++的EXE源码做成DLL动态库也不行。偶然发现VS中编译成X86没问题,如果是x64也不能工作。原来和32位,64位程序有关啊。
查资料有如下结论:
Windows的进程架构兼容性规则:64位程序不能直接访问32位程序的内存空间;不能直接发送某些Windows消息给32位程序;存在架构隔离.
什么架构隔离.,妥妥的生殖隔离,让我 F**K二天也怀不上!
解决办法很多:
1、 go 编译成32位程序 .set GOARCH=386 go build ,不行,为个小功能,回退到过去不干。
...
还是使用目前办法,做个32位的EXE 让它获取内容后传给go.