使用ndk-build在模拟器或智能手机上运行代码时,即使标识符是在不同的类中声明的,我也会收到上面的错误(请参见下面的代码)。 在我的PC上使用Visual Studio来运行它,我从未遇到过任何问题。
这是发生问题的地方:
class DescriptorSetList : public VulkanResourceList<VkDescriptorSet>
{
private:
VkDescriptorPool descriptorPool;
public:
DescriptorSetList(VkDevice &dev, VkDescriptorPool pool) : VulkanResourceList(dev), descriptorPool(pool) {};
~DescriptorSetList()
{
for (auto& descriptorSet : resources)
{
vkFreeDescriptorSets(device, descriptorPool, 1, &descriptorSet.second);
}
}
VkDescriptorSet add(std::string name, VkDescriptorSetAllocateInfo allocInfo)
{
VkDescriptorSet descriptorSet;
VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSet));
resources[name] = descriptorSet;
return descriptorSet;
}
};
这是声明标识符的地方:
VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
VkDevice device,
VkDescriptorPool descriptorPool,
uint32_t descriptorSetCount,
const VkDescriptorSet* pDescriptorSets);
我尝试了在这里找到的声明和调用标识符的不同方法,但是没有任何效果。
我在做什么错了?