如何使用swig/cgo调试“退出状态3221225477”?

我正在使用SWIG与golang的集成来生成cgo文件。我正在链接一个C++lib和Go。


我已经安装了我的软件包:并且它发生得很好。但是当我在这里启动我的主要示例时:swig -go -cgo -c++ -intgosize 64 ./basic_host.igo install


package main


import (

    "fmt"

    "myLib/basic_host"

)


func main() {

    fmt.Println("Hello")

    basic_host.PrintHelpAndExit("test", 0)

    fmt.Println("World!")

}

当我尝试启动它时,我得到了,我的打印问候甚至没有被考虑在内,似乎我的程序甚至没有启动...我不知道如何处理这个问题,因为调试工具甚至没有启动。exit status 3221225477


退出状态似乎与NIL指针引用有关:请参阅此处,肯定是由于cgo集成。我正在Windows 10上使用MinGW构建,在我的配置下:


swig -version

SWIG Version 4.0.2

Compiled with i686-w64-mingw32-g++ [i686-w64-mingw32]

Configured options: +pcre

我的SWIG接口文件是这样的(basic_host.i):


%module basic_host

%{

    #include <atomic>

    #include <map>

    #include <iostream>

    #include <memory>

    

    #include <myLib/myLib.hpp>

    #include "../../examples/basic_host/command_line.h"

    #include "../../examples/basic_host/command_line.cpp"

%}


%inline %{

    extern void printHelpAndExit(const char* binary, unsigned int exitCode);

%}


凤凰求蛊
浏览 153回答 1
1回答

芜湖不芜

我遇到的问题是我在Windows上使用的编译器。我曾经使用TDM-GCC进行编译,但是正如这篇文章所暗示的那样,这和lib之间存在已知问题......iostream我刚刚将我用SWIG构建的编译器(gcc,g++ ,..)更改为MinGW64:下载链接。在那之后,一切都可以正常工作,我能够毫无问题地使用我的lib。感谢那些试图帮助我的人。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go