gpt4 book ai didi

c++ - 在 C++ 中调用当前命名空间之外的函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:31 29 4
gpt4 key购买 nike

我试图从我的 CPP 代码中调用 C 文件中定义的函数,但我认为我在获取正确的命名空间时遇到了问题。编译时出现错误:“未定义对‘Get’的引用”。

我的 C 头文件:

// c.h
#ifndef C_H
#define C_H

#ifdef __cplusplus
extern "C" {
#endif

typedef enum
{
VAL_A1,
VAL_A2
} TYPE_A;

typedef enum
{
VAL_B1,
VAL_B2
} TYPE_B;

typedef enum
{
VAL_C1,
VAL_C2
} TYPE_C;

typedef struct
{
TYPE_B b;
TYPE_C c;
} TYPE_D;

TYPE_A Get(TYPE_B b, TYPE_D *d);

#ifdef __cplusplus
}
#endif

#endif

还有我的 CPP 文件:

// main.cpp
...

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

...

namespace MyNamespace
{
...

MyClass::MyFunc()
{
TYPE_D d;
// None of these calls will compile
// Get(VAL_B1, &d);
// ::Get(VAL_B1, &d);
}

...
}

我试过在没有命名空间引用的情况下调用,也尝试过使用 "::" 调用“根”命名空间,但没有成功。任何帮助表示赞赏。我已经通读了这似乎澄清了它,但我并不真正理解它:

using C++ with namespace in C

最佳答案

“ undefined reference ”意味着该函数已经声明(在头文件中),但没有定义。您需要在某处的源文件(可能是您引用的 C 文件)中定义函数,并确保在构建程序时链接该函数。

关于c++ - 在 C++ 中调用当前命名空间之外的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783512/

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