【发布时间】:2011-09-03 11:16:49
【问题描述】:
我正在使用一个示例程序,它应该允许使用称为 OSC 的协议控制 MIDI 设备。
我所做的是从这里下载 SDK:http://mac.softpedia.com/get/Development/Libraries/oscpack.shtml
“示例”文件夹包含一个名为“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++ 并创建了一个新的(CLR 控制台应用程序)项目,名为“osctemp”。我从“SimpleSend.cpp”文件中复制代码并将其粘贴到为我的项目创建的主 cpp 文件中,保留默认项目文件中的以下代码行:
#include "stdafx.h"
using namespace System;
然后我导航到 stdafx.h 头文件并注意到它在底部包含以下行:
// TODO: reference additional headers your program requires here
...所以我乖乖把include和define从我的主cpp文件移到了这里。
我还注意到我需要将包含添加到我的项目中,因此在 Windows 资源管理器中我将文件夹“osc”和“ip”复制到我的项目文件夹中。
运行时,我收到以下错误:
1>------ Build started: Project: osctemp, Configuration: Debug Win32 ------
1> stdafx.cpp
1> AssemblyInfo.cpp
1> osctemp.cpp
1> Generating Code...
1> .NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>osctemp.obj : error LNK2028: unresolved token (0A00000A) "public: char const * __thiscall osc::OutboundPacketStream::Data(void)const " (?Data@OutboundPacketStream@osc@@$$FQBEPBDXZ) referenced in function "int __cdecl main(int,char * * const)" (?main@@$$HYAHHQAPAD@Z)
1>osctemp.obj : error LNK2028: unresolved token (0A00000B) "public: unsigned int __thiscall osc::OutboundPacketStream::Size(void)const " (?Size@OutboundPacketStream@osc@@$$FQBEIXZ) referenced in function "int __cdecl main(int,char * * const)" (?main@@$$HYAHHQAPAD@Z)
1>osctemp.obj : error LNK2028: unresolved token (0A00000C) "public: void __thiscall UdpSocket::Send(char const *,int)" (?Send@UdpSocket@@$$FQAEXPBDH@Z) referenced in function "int __cdecl main(int,char * * const)" (?main@@$$HYAHHQAPAD@Z)
...(And many more like this)...
1>D:\Temp\OSCTEMP\osctemp\Debug\osctemp.exe : fatal error LNK1120: 40 unresolved externals
我错过了什么?
【问题讨论】:
-
您是否已将源“osc”和“ip”文件夹添加到您的 Visual C++ 项目中?仅仅将它们复制到您的项目在硬盘中的位置是行不通的。
-
@Julio 不,我该怎么做?我已将它们添加到项目树结构中
-
尝试将源代码文件夹拖到VC++中的项目导航树中?自从我使用 VC 以来已经很久了,所以我不确定拖放是否有效。我想您也可以右键单击项目导航树并为此选择“添加现有文件...”(或类似的)菜单项。
-
@Julio 谢谢,我已经完成了,但它仍然无法编译。我被告知我需要建立自己的图书馆。我不知道那是什么意思!
-
+1 表示尝试做出体面的问题描述。