如何解决“未解决的外部符号”错误
| 我正在使用一个示例程序,该程序应该允许使用称为OSC的协议控制MIDI设备。 我所做的是从以下位置下载SDK:http://mac.softpedia.com/get/Development/Libraries/oscpack.shtml \'examples \'文件夹包含一个名为\'SimpleSend.cpp \'的文件。的代码如下:#include \"osc/OscOutboundPacketStream.h\"
#include \"ip/UdpSocket.h\"
#define ADDRESS \"127.0.0.1\"
#define PORT 7000
#define OUTPUT_BUFFER_SIZE 1024
int main(int argc,char* argv[])
{
UdpTransmitSocket transmitSocket( IpEndpointName( ADDRESS,PORT ) );
char buffer[OUTPUT_BUFFER_SIZE];
osc::OutboundPacketStream p( buffer,OUTPUT_BUFFER_SIZE );
p << osc::BeginBundleImmediate
<< osc::BeginMessage( \"/test1\" )
<< true << 23 << (float)3.1415 << \"hello\" << osc::EndMessage
<< osc::BeginMessage( \"/test2\" )
<< true << 24 << (float)10.8 << \"world\" << osc::EndMessage
<< osc::EndBundle;
transmitSocket.Send( p.Data(),p.Size() );
}
我已经打开Visual C ++,并创建了一个名为\'osctemp \'的新(CLR控制台应用程序)项目。我从\'SimpleSend.cpp \'文件复制代码,并将其粘贴到为我的项目创建的主cpp文件中,并保留默认项目文件中的以下代码行:
#include \"stdafx.h\"
using namespace System;
然后,我导航到stdafx.h头文件,并注意到该文件的底部包含以下行:
// TODO: reference additional headers your program requires here
...所以我乖乖地将include和定义从我的主cpp文件移到了这里。
我还注意到,我需要将包含项添加到我的项目中,因此在Windows资源管理器中,我将文件夹\'osc \'和\'ip \'复制到我的项目文件夹中。
运行时,我收到以下错误:
1> ------开始构建:项目:osctemp,配置:调试Win32 ------
1> stdafx.cpp
1> AssemblyInfo.cpp
1> osctemp.cpp
1>正在生成代码...
1> .NETFramework,Version = v4.0.AssemblyAttributes.cpp
1> osctemp.obj:错误LNK2028:未解析的令牌(0A00000A)\“ public:char const * __thiscall osc :: OutboundPacketStream :: Data(void)const \”(?Data @ OutboundPacketStream @ osc @@ $$ FQBEPBDXZ)函数\“ int __cdecl main(int,char * * const)\”(?main @@ $$ HYAHHQAPAD @ Z)
1> osctemp.obj:错误LNK2028:未解析的令牌(0A00000B)\“ public:unsigned int __thiscall osc :: OutboundPacketStream :: Size(void)const \”(?Size @ OutboundPacketStream @ osc @@ $$ FQBEIXZ) \“ int __cdecl main(int,char * * const)\”(?main @@ $$ HYAHHQAPAD @ Z)
1> osctemp.obj:错误LNK2028:未解析的令牌(0A00000C)\“ public:void __thiscall UdpSocket :: Send(char const *,int)\”(?Send @ UdpSocket @@ $$ FQAEXPBDH @ Z) “ int __cdecl main(int,char * * const)\”(?main @@ $$ HYAHHQAPAD @ Z)
...(还有更多类似的东西)...
1> D:\\ Temp \\ OSCTEMP \\ osctemp \\ Debug \\ osctemp.exe:致命错误LNK1120:40个未解决的外部组件
我错过了什么?
解决方法
从问题描述中,我找不到有关如何链接到SDK库的任何信息。你这样做了吗?
要链接到SDK库,您需要一个或多个.lib文件。即使将SDK作为DLL分发,您也需要一个lib文件来进行构建时链接。您应该通读SDK文档,并查找有关链接依赖关系的指南。
如果您似乎在SDK发行版中找不到任何lib文件,则很可能是您需要先构建SDK来生成一个库,然后再链接到它。或者,如果SDK附带了一个现成的VS项目,则可以将其添加到解决方案中,并设置自己的项目以依赖它(即VS会执行查找输出库并与之链接的工作)。
同样,如果SDK具有任何下降的标准,那么如果有必要,应该有一些有关自行构建SDK的文档。
祝好运。
, 您或者没有提取正确的库,或者您的原型没有根据库中的实际内容正确定义库函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。