vc写的dll被mingw的g++编译引用

dll.cpp,用vc2017编译

#include <iostream>
#include <windows.h>

extern "C" __declspec(dllexport) void Go() {
  std::cout << "go" << std::endl;
}

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

main.cpp 用mingw64的g++编译

#include <iostream>

extern "C" __declspec(dllimport) void Go();
int main (int argc, char **argv)
{ 

  Go();
  return 0;
}

将dll.lib dll.dll dll.exp dll.pdb复制到main.cpp当前目录,编译:

g++ main.cpp -ldll -L.

原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/9101306.html

时间: 2024-10-18 21:32:44

vc写的dll被mingw的g++编译引用的相关文章

发现个delphi调用vc写的Dll中包含pchar参数报错奇怪现象

发现个delphi调用vc写的Dll中包含pchar参数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会运行错,在之前任意加上条语句就不报错了奇怪! vc的DLL源码地址 http://blog.csdn.net/lqena/article/details/46357165 Delphi源码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co

Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)

下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this);     QFileInfo fileinfo(appUrl);     QString appPath = QApplication::applicationDirPath()+SAVEDIR+"/"+fileinfo.fileName();     bool res = proce

Unity3D调用Vc和Csharp dll

1.C#封装的dll 现在vs中创建一个类,里面只要写一个简单的静态类和静态方法就可以了,如下: namespace pnsd { public static class pn { public static string getName(string name) { return name; } } } 然后编译成dll文件,名字为pnsd.dll 2.在unity中使用自定义的C#封装的dll组件 在unity中创建一个Plugins文件夹,所有的外部引用的dll组件必须要放在这个文件下,才

vc 制作图片资源dll

方法一: 使用纯WIN32 DLL方法封装纯资源第一步,通过VS2005建立WIN32 DLL 空工程第二步,设置配置属性->链接器->高级->无入口点(是/NOENTRY)设置配置属性->C/C++->代码生成->运行时库(多线程/MT)第三步,加入图片资源并定义资源名称第四步,生成DLL,如Skin.DLL第五步,调用方法例子HINSTANCE hLibrary; if ((hLibrary = LoadLibrary (TEXT ("skin.DLL&q

Delphi写的DLL,OCX中多线程一个同步问题

Delphi写的DLL,OCX中如果使用了TThread.Synchronze(Proc),可能导致线程死锁,原因是无法唤醒EXE中主线程, Synchronze并不会进入EXE主线程消息队列. 下面的程序自动解决此问题,只需要加入DLL,OCX工程文件中,在DLL,OCX中便可以使用TThread.Synchronze(Proc)了,无需再写一行代码. //解决Delphi编译的DLL,OCX文件中的线程调用 TThread.Synchronize后挂起无法再激活问题 //调用了TThread

C#写的dll跨语言调用

C#写的dll为非标准的windows下dll,故 一般其他语言不能直接调用,当然基于.net平台下的编程语言是可以调用,要让其他语言调用C#写的dll一般通过webservice服务或者是Com 方式.经过在网上找资料以及自身的实践发现可以通过以下方式在Delphi和VB语言中调用. 1.编写C#写dll,用VS新建一个类库项目TestDll,源码如下: using System; using System.Collections.Generic;using System.Text;using

C#程序调用C++写的dll传递string出现bad ptr

本来是做C/C++的,因为项目需要,所以才搞的C#,说实话,很鄙视做C#的,总结起来,扯淡的DllImport,有本事别用这破玩意,看你C#还能干啥? 参考网上的按照下面的方式来,结果在C++的dll库中打断点,第二个参数怎么都是bad ptr,郁闷至极,耗费了两天的功夫,都没有搞定,也参考了:http://blog.csdn.net/yongshengsilingsa/article/details/7917877 的文章,也无济于事.最后就索性自己再写个简单的dll和exe,只有一个接口,调

Delphi7程序调用C#写的DLL解决办法(转)

近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一个"类库"项目TestDll,using System.Runtime.InteropServices;namespace TestDll{public interface  I TestClass  {     void YourProcedure(stirng param1);}[Cla

c++ c# java 调用 c++ 写的dll

1. vs 中新建win32 dll 项目   testdll 添加实现文件       test.cpp #include "stdafx.h" #include <iostream>using namespace std;int Add(int plus1, int plus2){ int add_result = plus1 + plus2; return add_result;} 添加模板定义文件 LIBRARY "testdll"EXPORTS