Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';未解析的外部符号';错误_C++_Osc - Fatal编程技术网

C++ ';未解析的外部符号';错误

C++ ';未解析的外部符号';错误,c++,osc,C++,Osc,我正在使用一个示例程序,该程序应该允许使用称为OSC的协议控制MIDI设备 我所做的是从这里下载SDK: “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 in

我正在使用一个示例程序,该程序应该允许使用称为OSC的协议控制MIDI设备

我所做的是从这里下载SDK:

“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() );
}
然后,我导航到stdafx.h头文件,并注意到它的底部包含以下内容:

// TODO: reference additional headers your program requires here
…所以我顺从地将include和defines从我的主cpp文件移动到这里

我还注意到,我需要将include添加到我的项目中,以便在Windows资源管理器中将文件夹“osc”和“ip”复制到我的项目文件夹中

运行时,我收到以下错误:

1> ----构建已启动:项目:osctemp,配置:调试Win32------

1> stdafx.cpp

1> AssemblyInfo.cpp

1> osctemp.cpp

1> 正在生成代码

1> .NETFramework,版本=v4.0.AssemblyAttributes.cpp

1> OSCTTEMP.obj:错误LNK2028:未解析的令牌(0A00000A)“public:char const*\uu thiscall osc::OutboundPacketStream::Data(void)const”(?Data@OutboundPacketStream@osc@$$FQBEPBDXZ)在函数“int\uu cdecl main(int,char**const)”中引用(?main@@$$HYAHHQAPAD@Z)

1> OSCTTEMP.obj:错误LNK2028:未解析的令牌(0A00000B)“公共:未签名的整数\uu thiscall osc::OutboundPacketStream::Size(void)const”(?Size@OutboundPacketStream@osc@$$FQBEIXZ)在函数“int\uu cdecl main(int,char**const)”中引用(?main@@$$HYAHHQAPAD@Z)

1> osctemp.obj:错误LNK2028:未解析的令牌(0A00000C)“public:void\uu thiscall UdpSocket::Send(char const*,int)”(?Send@UdpSocket@@$$FQAEXPBDH@Z)在函数“int u 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附带一个ready VS项目,您可以将其添加到解决方案中,并将您自己的项目设置为依赖于它(即VS执行查找输出库并与之链接的工作)

同样,如果SDK是任何下降标准,那么如果有必要,应该有关于自己构建SDK的文档


祝你好运。

从你的问题描述中,我找不到任何关于你如何链接到SDK库的信息。你这样做了吗

要链接SDK库,您需要一个或多个.lib文件。即使SDK作为DLL分发,您也需要一个用于构建时链接的lib文件。您应该通读SDK文档并寻找有关链接依赖性的指导原则

如果在SDK发行版中找不到任何lib文件,很可能需要首先构建SDK以生成库,然后链接到库。或者,如果SDK附带一个ready VS项目,您可以将其添加到解决方案中,并将您自己的项目设置为依赖于它(即VS执行查找输出库并与之链接的工作)

同样,如果SDK是任何下降标准,那么如果有必要,应该有关于自己构建SDK的文档


<好运>

你是否将源“OSC”和“IP”文件夹添加到Visual C++项目中?仅仅将它们复制到项目所在的硬盘上是不行的。@Julio不,我该怎么做?我已将它们添加到项目树结构中尝试在VC++中将源代码文件夹拖动到项目导航树中?我用VC已经很久了,所以我不确定拖放是否有效。我想你也可以右键单击项目导航树,然后选择“添加现有文件…”(或类似内容)菜单项。@Julio谢谢,我已经这样做了,但它仍然无法编译。我被告知我需要建立自己的图书馆。我不知道那是什么意思+1,试图做出一个体面的问题描述。你有没有把源“OSC”和“IP”文件夹添加到Visual C++项目中?仅仅将它们复制到项目所在的硬盘上是不行的。@Julio不,我该怎么做?我已将它们添加到项目树结构中尝试在VC++中将源代码文件夹拖动到项目导航树中?我用VC已经很久了,所以我不确定拖放是否有效。我想你也可以右键单击项目导航树,然后选择“添加现有文件…”(或类似内容)菜单项。@Julio谢谢,我已经这样做了,但它仍然无法编译。我被告知我需要建立自己的图书馆。我不知道那是什么意思+1用于尝试做出一个像样的问题描述。我如何着手提取库?我已经将包含文件夹添加到物理目录结构中,并将这些文件夹拖到VisualC++项目的树视图中,但仍然没有运行SDK不包含LIB文件。这就是我需要的吗?您需要修改项目链接器设置,以便在输入中包含SDK的库,并指定它们所在的目录。对于VS2010,在properties->Linker->General中,您需要设置“附加库目录”,在properties->Linker->Input中,您需要将它们添加到“附加依赖项”
// TODO: reference additional headers your program requires here