gpt4 book ai didi

c - 在 Visual Studio 中用 C(不是 C++)编写一个 dll 导致无法解析的符号

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:30 25 4
gpt4 key购买 nike

我一直在 MSDN 上完成 dll 演练它工作正常。然后我删除了 dll 中的所有 C++ 样式代码并将其替换为 C 等效代码,它仍然有效。

但是,当我将文件从 X.cpp 重命名为 X.c(我猜这会导致在 C 模式下进行编译)时,dll 中的每个函数都会出现错误 LNK2019(未解析的外部符号)。出于我的目的,dll 必须使用 C 而不是 C++,因为这是 Java Native Access 支持的。

这是 dll 的 header :

__declspec(dllexport) double Add(double a, double b);
__declspec(dllexport) double Subtract(double a, double b);
__declspec(dllexport) double Multiply(double a, double b);
__declspec(dllexport) double Divide(double a, double b);

这是使用 dll 的 (C++) 测试程序的主体:

#include <iostream>
#include "MyMathFuncs.h"
using namespace std;
int main()
{
double a = 7.4;
int b = 99;

cout << "a + b = " <<
Add(a, b) << endl;
cout << "a - b = " <<
Subtract(a, b) << endl;
cout << "a * b = " <<
Multiply(a, b) << endl;
cout << "a / b = " <<
Divide(a, b) << endl;

return 0;
}

(只是为了澄清,测试程序是用 C++ 编写的;这只是我试图用 C 编译的 dll)。

最佳答案

添加

extern "C"
{
#include "MyMathFuncs.h"
}

关于c - 在 Visual Studio 中用 C(不是 C++)编写一个 dll 导致无法解析的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com