相关疑难解决方法(0)

使用dllexport从DLL导出函数

我想要一个从C++ windows DLL导出函数的简单示例.

我想看看标题,cpp文件和def文件(如果绝对需要).

我希望导出的名称不加修饰.我想使用最标准的调用约定(__stdcall?).我想使用__declspec(dllexport)而不必使用DEF文件.

例如:

  //header
  extern "C"
  {
   __declspec(dllexport) int __stdcall foo(long bar);
  }

  //cpp
  int __stdcall foo(long bar)
  {
    return 0;
  }
Run Code Online (Sandbox Code Playgroud)

我试图避免链接器为名称添加下划线和/或数字(字节数?).

我没有支持使用相同标头的dllimport和dllexport.我不想要任何有关导出C++类方法的信息,只需要c风格的全局函数.

UPDATE

不包括调用约定(并使用extern"C")给出了我喜欢的导出名称,但这意味着什么?是什么默认调用约定我得到什么pinvoke(.NET),声明(vb6)和GetProcAddress会期望?(我猜对于GetProcAddress,它将取决于调用者创建的函数指针).

我希望在没有头文件的情况下使用这个DLL,所以我真的不需要很多花哨的#defines来使调用者可以使用头文件.

我的回答是我必须使用DEF文件.

dll winapi visual-c++ name-decoration

97
推荐指数
2
解决办法
11万
查看次数

使用C++导入DLL(Win32)

如何在C++中导入DLL(minifmod.dll)?

我希望能够在这个DLL中调用一个函数.我已经知道函数的参数列表,但我不知道如何调用它.

有没有办法在C++中声明导入的函数,就像在C#中一样?

c++ import dll winapi

14
推荐指数
2
解决办法
8万
查看次数

在C++中调用(调用)函数的方式有多少?

我知道一种调用函数的方法:

func(x, y);
Run Code Online (Sandbox Code Playgroud)

有更多方法可以调用函数吗?

c++ function

4
推荐指数
2
解决办法
1574
查看次数

在c ++文件中调用dll

我创建了一个DLL文件(helloWorld.dll):

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define DLL_FUNC extern "C" __declspec(dllexport)

DLL_FUNC int __stdcall Hello() {
    MessageBox(HWND_DESKTOP, "Hello, world", "MEssage", MB_OK);
    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

之后我创建了一个我要调用的cpp(useDLL.cpp)

#include <windows.h>
#include <stdio.h>

int main () {
    typedef void (*pfunc)();
    HINSTANCE hdll = LoadLibrary("HelloWorld.dll");
    pfunc Hello;
    Hello = (pfunc)GetProcAddress(hdll, "hello");
    Hello();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何调用Hello()函数?

c++ dll

1
推荐指数
1
解决办法
231
查看次数

标签 统计

c++ ×3

dll ×3

winapi ×2

function ×1

import ×1

name-decoration ×1

visual-c++ ×1