使用c ++编译着色器(LNK2019错误)

时间:2014-02-05 10:15:33

标签: opengl compilation

我正在尝试使用基于以下教程的visual studio创建一个简单的Arnold渲染器着色器。 https://support.solidangle.com/display/mayatut/Creating+a+shader

我创建了一个win32console应用程序,其应用程序类型设置为DLL,并将我的include库和ai.lib添加到链接器输入。

当我尝试编译着色器时,我遇到了

错误1:error LNK2019: unresolved external symbol __imp__AiNodeParamRGB referenced in function "void __cdecl Parameters(struct AtList *,struct AtMetaDataStore *)" (?Parameters@@YAXPAUAtList@@PAUAtMetaDataStore@@@Z) C:\Users\matt\Documents\Visual Studio 2013\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.obj ConsoleApplication2

错误2:error LNK2019: unresolved external symbol __imp__AiShaderEvalParamFuncRGB referenced in function "void __cdecl Evaluate(struct AtNode *,struct AtShaderGlobals *)" (?Evaluate@@YAXPAUAtNode@@PAUAtShaderGlobals@@@Z) C:\Users\matt\Documents\Visual Studio 2013\Projects\ConsoleApplication2\ConsoleApplication2\ConsoleApplication2.obj ConsoleApplication2

任何帮助?

1 个答案:

答案 0 :(得分:0)

您正在尝试链接64位库(ai.lib)以创建32位dll。换句话说,链接器抱怨,因为它不了解ai.lib架构。 64位和32位架构之间的不匹配导致了这个问题。如果您的系统是32位,则无法编译着色器。如果你有一个64位系统,你可以设置VC ++来构建和编译一个64位的DLL。

在VC ++的工具栏上 单击Win32(调试旁边),然后打开下拉菜单。 选择配置管理器,在平台下拉菜单下,选择x64。 清洁并再次建造。