C++ GUI 程序如何调用 golang 生成的 DLL

2019-06-22 11:23:29 +08:00
 mainjzb

只针对 Windows, 我把 brook 编译成 dll 给我的 C++写的 GUI 程序调用,Golang 编译成 dll 没有什么问题。C++也能调用。

但是如果我 C++程序选择使用使用窗口,不用控制台模式,调用就不行了。如何修改 brook,让他被 GUI 程序调用。

4754 次点击
所在节点    Go 编程语言
6 条回复
iwong0exv2
2019-06-22 11:31:06 +08:00
调用不行是什么意思?
加载 DLL 的方式是静态链接还是动态地 LoadLibrary ?
编译、链接还是运行时有问题?有没有错误代码或提示?
zycpp
2019-06-22 11:55:14 +08:00
静态编译不行吗?
可以先用 dumpbin 看下依赖
mainjzb
2019-06-22 12:09:02 +08:00
@iwong0exv2 动态。
运行时,运行到 dll 的函数里里面,直接整个程序退出了。没有错误提示。
zwh2698
2019-06-22 12:35:02 +08:00
运行期库可能不对,调试器可以捕获具体情况
zwh2698
2019-06-22 12:37:46 +08:00
另外不要导出这种 string 的函数,因为存在内存在不同运行期释放的问题,就裸内存传
stephen9357
2019-06-22 19:16:03 +08:00
估计是崩了,不要跨模块传递 string、STL 容器之类的对象,一旦涉及内存分配或释放就会崩掉了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX