Label::createWithTTF报错CCASSERT( child != nullptr, "Argument must be non-nil");

    auto label1 = Label::createWithTTF("good", "Arial", 40.f);
    addChild(label1);
    label1->setPosition(Vec2(40,40));


```


错误信息是:
CCASSERT( child != nullptr, "Argument must be non-nil");



但是我用老的方式就没问题,编译正常:
    auto label1 = LabelTTF::create("good", "Arial", 40.f);
    addChild(label1);
    label1->setPosition(Vec2(40,40));


```

我也碰到了,咋回事啊,
auto label = Label::createWithTTF(“aaa”, “Arial”, 24);

// position the label on the center of the screen
label->setPosition(Point(origin.x + visibleSize.width/2,origin.y + visibleSize.height - label->getContentSize().height));

origin 一直等于 0x000000000 ----是不是表示是空指针呢?后来我实在检查不出问题来了,就重新建了个空白项目一行行代码进行比对才发现createxx 出了问题,我很好奇,这个问题应该很多人碰到啊,为什么都保持沉默呢

是的,很奇怪,但是用例子里的就可以顺利创建。
难道是resource目录没有加入serch目录?

跟踪了下,发现是创建字体,读取ttf文件内容的时候,在win32下CreateFile失败。

    HANDLE fileHandle = ::CreateFileW(wszBuf, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, nullptr);
    CC_BREAK_IF(fileHandle == INVALID_HANDLE_VALUE);

不是路径问题,可能是某种权限问题,错误号是32:
另一个程序正在使用此文件,进程无法访问。

可能是在浏览器里开启了字体预览功能,调试的时候,鼠标正点击在该字体上开启了预览,所以导致文件被占用。

另外,我顺便把vc2012以管理员身份启动,同时将程序的uac权限升级到了以requireAdministrator,问题就解决了。

用FILE_SHARE_READ共享模式打开文件。