提问人:Tohrwarneth 提问时间:11/4/2023 最后编辑:273KTohrwarneth 更新时间:11/4/2023 访问量:67
C++ 共享库不导出“外部 C”函数 [关闭]
C++ Shared Library does not export "extern C" functions [closed]
问:
我正在开发一个共享库并添加一些函数,这些函数导出为 c 函数,因此我可以在 C# 中轻松使用它们。但是我的 c 函数都没有导出。
根据应用程序 DependenciesGUI,我的 c++ 函数被导出,但我的 c 函数都没有。
我创建了一个测试类来演示我的问题: TEST_API包含 __declspec(dllimport) 和导出
#pragma once
#include "DLL_Macro.h"
class TEST_API Attempt {
int x;
public:
Attempt(int x);
int adding(int y);
};
extern "C" __declspec(dllexport) void* Create(int x) {
return (void*) new Attempt(x);
};
extern "C" __declspec(dllexport) int AttemptAdd(Attempt * a, int y) {
return a->adding(y);
};
答:
0赞
Tohrwarneth
11/4/2023
#1
问题的解决方案很简单: 在源文件中包含带有 extern “C” 函数的标头。就我而言,在类的 cpp 文件中。
评论
0赞
Some programmer dude
11/4/2023
替代解决方案:单独的声明和定义。将声明放在头文件中,将定义(实现)放在源文件中。
评论
extern "C" __declspec(dllexport) void* Create(int x) { return nullptr; }
Create
_Create
TEST_API
__declspec(dllexport)
__declspec(dllimport)