我尝试在Visual Studio 2015社区中编译来自https://github.com/zcbenz/BPlusTree的代码。代码可以用gcc编译,但在VS中,我得到了
无法引用“bpt :: internal_node_t”的默认构造函数 - 它是已删除的函数
结构如下:
struct internal_node_t {
typedef index_t * child_t;
off_t parent; /* parent node offset */
off_t next;
off_t prev;
size_t n; /* how many children */
index_t children[BP_ORDER];
};
引用可以在bpt.cc
的任何地方看到,就像这样
internal_node_t parent;
我真的没有得到消息的含义。如何在VS中编译代码?
某种类型定义更新:
struct key_t {
char k[16];
key_t(const char *str = "")
{
bzero(k, sizeof(k));
strcpy_s(k, str);
}
};
typedef unsigned int size_t;
struct index_t {
key_t key;
off_t child; /* child's offset */
};
我在off_t
中使用<sys\types.h>
,在#define bzero(ptr, size) memset(ptr, 0, size)
使用marco bzero
我还写了另一个这样的程序:
#include <sys/types.h>
#include <string.h>
#define bzero(ptr, size) memset(ptr, 0, size)
struct key_t {
char k[16];
key_t(const char *str = "")
{
bzero(k, sizeof(k));
strcpy_s(k, str);
}
};
struct index_t {
key_t key;
off_t child; /* child's offset */
};
struct internal_node_t {
typedef index_t * child_t;
off_t parent; /* parent node offset */
off_t next;
off_t prev;
size_t n; /* how many children */
index_t children[20];
};
int main() {
internal_node_t t;
}
适用于VS2015。
答案 0 :(得分:2)
我发现依赖于POSIX类型的代码库不太可能在针对Windows的编译器中编译。也许你应该尝试像Cygwin这样的东西。
例如,off_t
和key_t
都来自<sys/types.h>
。作者甚至不打算包括这个标题,给人一种虚假的便携感。
注意:VS2015确实有off_t
。实际问题似乎是System V IPC(<sys/ipc.h>
,关注key_t
的实际标头),这是特定于Linux的。