只针对 Windows, 我把 brook 编译成 dll 给我的 C++写的 GUI 程序调用,Golang 编译成 dll 没有什么问题。C++也能调用。
但是如果我 C++程序选择使用使用窗口,不用控制台模式,调用就不行了。如何修改 brook,让他被 GUI 程序调用。
1
iwong0exv2 2019-06-22 11:31:06 +08:00 via Android
调用不行是什么意思?
加载 DLL 的方式是静态链接还是动态地 LoadLibrary ? 编译、链接还是运行时有问题?有没有错误代码或提示? |
2
zycpp 2019-06-22 11:55:14 +08:00 via iPhone
静态编译不行吗?
可以先用 dumpbin 看下依赖 |
3
mainjzb OP @iwong0exv2 动态。
运行时,运行到 dll 的函数里里面,直接整个程序退出了。没有错误提示。 |
4
zwh2698 2019-06-22 12:35:02 +08:00 via Android
运行期库可能不对,调试器可以捕获具体情况
|
5
zwh2698 2019-06-22 12:37:46 +08:00 via Android
另外不要导出这种 string 的函数,因为存在内存在不同运行期释放的问题,就裸内存传
|
6
stephen9357 2019-06-22 19:16:03 +08:00
估计是崩了,不要跨模块传递 string、STL 容器之类的对象,一旦涉及内存分配或释放就会崩掉了。
|