- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人可以向我解释如何在基于 Eclipse 工作区的项目中使用 oscpack 库吗?我已经使用 make 创建了目标文件,将 ip 和 osc 目录添加到我的项目树中,并将这些目录添加到项目设置>C/C++ 构建>设置>GCC C++ 编译器>包含中的包含路径列表中。
我无法让它在 Eclipse 或 g++ 命令行编译器中运行。我的想法不多了。
代码是 oscpack 站点 btw 中的 SimpleReceive.cpp。
/*
Example of two different ways to process received OSC messages using oscpack.
Receives the messages from the SimpleSend.cpp example.
*/
#include <iostream>
#include "osc/OscReceivedElements.h"
#include "osc/OscPacketListener.h"
#include "ip/UdpSocket.h"
#define PORT 7000
class ExamplePacketListener : public osc::OscPacketListener {
protected:
virtual void ProcessMessage( const osc::ReceivedMessage& m,
const IpEndpointName& remoteEndpoint )
{
try{
// example of parsing single messages. osc::OsckPacketListener
// handles the bundle traversal.
if( strcmp( m.AddressPattern(), "/test1" ) == 0 ){
// example #1 -- argument stream interface
osc::ReceivedMessageArgumentStream args = m.ArgumentStream();
bool a1;
osc::int32 a2;
float a3;
const char *a4;
args >> a1 >> a2 >> a3 >> a4 >> osc::EndMessage;
std::cout << "received '/test1' message with arguments: "
<< a1 << " " << a2 << " " << a3 << " " << a4 << "\n";
}else if( strcmp( m.AddressPattern(), "/test2" ) == 0 ){
// example #2 -- argument iterator interface, supports
// reflection for overloaded messages (eg you can call
// (*arg)->IsBool() to check if a bool was passed etc).
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
bool a1 = (arg++)->AsBool();
int a2 = (arg++)->AsInt32();
float a3 = (arg++)->AsFloat();
const char *a4 = (arg++)->AsString();
if( arg != m.ArgumentsEnd() )
throw osc::ExcessArgumentException();
std::cout << "received '/test2' message with arguments: "
<< a1 << " " << a2 << " " << a3 << " " << a4 << "\n";
}
}catch( osc::Exception& e ){
// any parsing errors such as unexpected argument types, or
// missing arguments get thrown as exceptions.
std::cout << "error while parsing message: "
<< m.AddressPattern() << ": " << e.what() << "\n";
}
}
};
int main(int argc, char* argv[])
{
ExamplePacketListener listener;
UdpListeningReceiveSocket s(
IpEndpointName( IpEndpointName::ANY_ADDRESS, PORT ),
&listener );
std::cout << "press ctrl-c to end\n";
s.RunUntilSigInt();
return 0;
}
控制台输出:
15:38:50 **** Incremental Build of configuration Debug for project NoteMaker_v2 ****
make all
Building target: NoteMaker_v2
Invoking: MacOS X C++ Linker
g++ -o "NoteMaker_v2" ./src/CommonFunctions.o ./src/DummyGen.o ./src/FileInterpreter.o ./src/GenAdmin.o ./src/Generator.o ./src/MusicalFunctions.o ./src/NoteBlock.o ./src/NoteMaker_v2.o ./src/NoteStack.o ./src/Serialism.o
Undefined symbols for architecture x86_64:
"osc::EndMessage", referenced from:
ExamplePacketListener::ProcessMessage(osc::ReceivedMessage const&, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedBundle::ReceivedBundle(osc::ReceivedPacket const&)", referenced from:
osc::OscPacketListener::ProcessPacket(char const*, int, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedBundle::ReceivedBundle(osc::ReceivedBundleElement const&)", referenced from:
osc::OscPacketListener::ProcessBundle(osc::ReceivedBundle const&, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedMessage::ReceivedMessage(osc::ReceivedPacket const&)", referenced from:
osc::OscPacketListener::ProcessPacket(char const*, int, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedMessage::ReceivedMessage(osc::ReceivedBundleElement const&)", referenced from:
osc::OscPacketListener::ProcessBundle(osc::ReceivedBundle const&, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedMessageArgumentIterator::Advance()", referenced from:
osc::ReceivedMessageArgumentIterator::operator++(int) in NoteMaker_v2.o
"osc::ReceivedPacket::IsBundle() const", referenced from:
osc::OscPacketListener::ProcessPacket(char const*, int, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedBundleElement::Size() const", referenced from:
osc::ReceivedBundleElementIterator::Advance() in NoteMaker_v2.o
"osc::ReceivedBundleElement::IsBundle() const", referenced from:
osc::OscPacketListener::ProcessBundle(osc::ReceivedBundle const&, IpEndpointName const&) in NoteMaker_v2.o
"osc::ReceivedMessageArgument::AsBool() const", referenced from:
ExamplePacketListener::ProcessMessage(osc::ReceivedMessage const&, IpEndpointName const&) in NoteMaker_v2.o
osc::ReceivedMessageArgumentStream::operator>>(bool&) in NoteMaker_v2.o
"osc::ReceivedMessageArgument::AsFloat() const", referenced from:
ExamplePacketListener::ProcessMessage(osc::ReceivedMessage const&, IpEndpointName const&) in NoteMaker_v2.o
osc::ReceivedMessageArgumentStream::operator>>(float&) in NoteMaker_v2.o
"osc::ReceivedMessageArgument::AsInt32() const", referenced from:
ExamplePacketListener::ProcessMessage(osc::ReceivedMessage const&, IpEndpointName const&) in NoteMaker_v2.o
osc::ReceivedMessageArgumentStream::operator>>(int&) in NoteMaker_v2.o
"osc::ReceivedMessageArgument::AsString() const", referenced from:
ExamplePacketListener::ProcessMessage(osc::ReceivedMessage const&, IpEndpointName const&) in NoteMaker_v2.o
osc::ReceivedMessageArgumentStream::operator>>(char const*&) in NoteMaker_v2.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [NoteMaker_v2] Error 1
15:38:50 Build Finished (took 279ms)
最佳答案
因此您需要配置路径和编译器/链接器选项。
在我的 ubuntu 盒子上,在 apt-get install liboscpack-dev
之后它使用以下选项编译得很好:
g++ -Wall -pedantic -g -O0 -I /usr/include/oscpack test.cpp -o test -loscpack
在您的盒子上,您可能还需要添加库的路径,例如
-L /usr/local/lib/oscpack
(我确实添加了缺少的 #include <cstring>
)
关于c++ - Eclipse项目中的OSCPack外部库测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22200523/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!