Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 在VisualStudio2010c++/CLI项目_Visual Studio 2010_Qt_Dll_C++ Cli_Mingw - Fatal编程技术网

Visual studio 2010 在VisualStudio2010c++/CLI项目

Visual studio 2010 在VisualStudio2010c++/CLI项目,visual-studio-2010,qt,dll,c++-cli,mingw,Visual Studio 2010,Qt,Dll,C++ Cli,Mingw,我有一个建立在Qt和Google协议缓冲区之上的通信库。它目前正在Windows上使用MinGW/GCC构建。我的目标是在C++/CLI(将非托管代码与托管代码连接起来)的帮助下,在.NET上的C#on中使用相同的库 我曾尝试在我的C++/CLI项目中直接使用MinGW生成的DLL,但我不断收到链接器错误(现在记不起错误代码,但有些关于缺少令牌和函数/签名的信息) 第一个问题是:我应该能够将MinGW生成的DLL与visualstudio编译器/链接器一起使用吗?或者我需要再次编译库,对所有项目

我有一个建立在Qt和Google协议缓冲区之上的通信库。它目前正在Windows上使用MinGW/GCC构建。我的目标是在C++/CLI(将非托管代码与托管代码连接起来)的帮助下,在.NET上的C#on中使用相同的库

我曾尝试在我的C++/CLI项目中直接使用MinGW生成的DLL,但我不断收到链接器错误(现在记不起错误代码,但有些关于缺少令牌和函数/签名的信息)

第一个问题是:我应该能够将MinGW生成的DLL与visualstudio编译器/链接器一起使用吗?或者我需要再次编译库,对所有项目只使用VS编译器

如果我能够直接使用MinGW生成的DLL,我如何在VisualStudio2010中引用它?在项目设置中,它似乎在查找*.lib文件,但在MinGW/GCC的输出中找不到任何.lib文件。它确实会生成*.a文件,但Visual Studio似乎不处理此类文件


我还应该提到,Qt和protobuf都是用MinGW编译的。但如果有必要,我当然可以重新编译VS2010中的所有部分。。不过,如果能够节省重新编译的时间,那就太好了,因为我们的buildserver已经有了使用MinGW的工作设置。

最简单的使用方法是使用Visual Studio重新编译它。这是假设你打算使用的接口中使用的C++类型和类的时候。

如果此库具有C接口,则可以通过LoadLibrary动态加载库,并使用GetProcAddress访问这些函数


但是,这完全取决于您打算如何使用库。

Qt不是C接口。。。用VisualStudio重新编译不仅仅是最简单的方法,也是唯一的方法。GCC不使用C++类相同的内存布局,所以即使为明文GCC构建的DLL创建了导入库,也不会起作用。我将继续在VS中重新编译它。@Ben Voigt:我知道,Qt本身没有C接口。但是他可以为他需要的东西创造一个。那样的话,他本可以用它的。即使它是由MinGWI创建的,我也不想评论这个话题,但您能描述一下您是如何在Windows上使用MinGW编译Google协议缓冲区的吗?