重复符号拱门X86_64
duplicate symbol arch X86_64
我正在编写代码,但是在构建时,由于main.o和mtp_wrapper.o中的符号重复,我确实遇到了问题。重复符号为_file_extension_type。我正在用C++和Qt编码
file_extension_type是在 mtp_wrapper.h 中定义的结构数组,如下所示:typedef
struct {
char *file_extension;
LIBMTP_filetype_t file_type;
} MTP_file_extension;
MTP_file_extension file_extension_type [] = {
{"wav", LIBMTP_FILETYPE_WAV},
{"mp3", LIBMTP_FILETYPE_MP3},
{"wma", LIBMTP_FILETYPE_WMA},
{"ogg", LIBMTP_FILETYPE_OGG},
{"mp4", LIBMTP_FILETYPE_MP4},
{"wmv", LIBMTP_FILETYPE_WMV},
{"avi", LIBMTP_FILETYPE_AVI},
{"mpeg", LIBMTP_FILETYPE_MPEG}}
这是唯一显示我们价值的地方。
mtp_wrapper.cpp包含我所有的类定义,默认情况下包含 mtp_wrapper.h
main.cpp 还包括 mtp_wrapper.h,但我需要它在 main 中实例化我的类,如下所示:
int main(int argc, char *argv[])
{
....
// Detecting puls device
//mtp_wrapper MyMtpPuls;
mtp_wrapper *MyMtpPuls = new mtp_wrapper;
error = MyMtpPuls->ConnectPulsDevice();
....
我想这是因为我在mtp_wrapper.cpp和主要.cpp中包含 mtp_wrapper.h。
但是如果我尝试在公共类中添加数组的定义,例如:
Class xxx : yyy {
public:
MTP_file_extension file_extension_type [];
问题消失了,但我无法使用函数大小。
在mtp_wrapper.cpp我需要知道file_Extension_type中包含的数字元素,最好的方法是将 sizeof(file_extension_type) 除以 sizeof(MTP_file_extension)
但是一旦我声明类大小中的数组就不可用。
任何想法???
我已经在重复的目的中看到了许多主题,但没有一个真正解决了我的问题。
下面定义了一个结构的实例,然后尝试将该名称用作类型:
struct {
char *file_extension;
LIBMTP_filetype_t file_type;
} MTP_file_extension;
如果打算将其作为类型,请将名称放在struct
之后。
struct MTP_file_extension {
char *file_extension;
LIBMTP_filetype_t file_type;
};
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 使用gcc从静态链接的文件中查找可选符号
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- VC++本机单元测试,找不到调试符号
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 为x86而非x64编译时出错
- 检查TCHAR数组输入是否为带符号整数C++
- C++如何仅使用MOV在x86上实现发布和获取
- 用符号版本替换对函数的所有调用
- 在 x86-64 平台上为 C(++) 中的 64 位无符号参数计算 (a*b)%n FAST
- 为什么WinDbg无法通过Service Pack 2 x86零售符号下载从Windows Server 2003加载符