小编pet*_*nts的帖子

警告C4003:宏'max'的实际参数不够 - Visual Studio 2010 C++

在Visual Studio 2010 SP1上编译openFrameworks 007项目时,我有以下警告:

d:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(127): warning C4003: not enough actual parameters for macro 'max'
d:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(128): warning C4003: not enough actual parameters for macro 'max'
d:\pedro\development\videoflow\openframeworks\libs\openframeworks\graphics\ofpixels.h(150): warning C4003: not enough actual parameters for macro 'max'
d:\pedro\development\videoflow\openframeworks\libs\openframeworks\graphics\ofpixels.h(151): warning C4003: not enough actual parameters for macro 'max'
Run Code Online (Sandbox Code Playgroud)

据我所知,这个警告通常会出现错误,但在我的情况下一切正常.受影响的代码如下:

const float srcMax = ( (sizeof(SrcType) == sizeof(float) ) ? 1.f : numeric_limits<SrcType>::max() );
const float dstMax = ( (sizeof(PixelType) == sizeof(float) ) ? 1.f : numeric_limits<PixelType>::max() );
Run Code Online (Sandbox Code Playgroud)

我尝试在预处理器上设置NOMINMAX,但由于openFrameworks还在ofConstants.h上定义了NOMINMAX,因此我收到了一些已经定义了NOMINMAX的警告.

我试图在受影响的openFrameworks文件上定义NOMINMAX,但它会产生相同的警告(事实上,如果我分析of​​Color.h和ofPixel.h中包含的文件,它们最终包括ofConstants.h,因此应该定义NOMINMAX).

关于如何解决这个问题的任何想法?如果你不......最好的是什么?这个警告或NOMINMAX已定义的一堆警告?

编辑:

BTW当我谈到错误时我正在讨论这些:警告C4003和错误C2589和C2059:x …

c++ compiler-warnings openframeworks visual-studio

37
推荐指数
2
解决办法
2万
查看次数

如何手动编写和执行Windows .exe(使用Hex编辑器的机器代码)?

我想知道如何通过使用十六进制编辑器来编写像Hello World程序这样简单的东西是可能的.我知道我可以在近机器级别使用汇编语言和汇编语言,但我只想尝试在Hello World这样的玩具示例中编写机器代码.

这可能是一个简单的DOS .COM文件,我可以在DOSBox上运行.但是,如果有人可以提供.EXE文件的示例,直接在我的Windows PC上运行它会很好.

这只是纯粹的好奇心.不......我不打算直接用二进制机器代码编写程序(我甚至不编写汇编代码,我只是在大多数时候使用C/C++作为我最低级的工具).我只是想知道是否可以这样做,因为可能有人必须在计算机的早期阶段做到这一点.

PS:我知道关于这个话题有类似的问题,但没有提供一个有效的例子.我只想要一个简单的例子,以便它可以帮助我理解编译器和汇编器如何生成可执行文件.我的意思是......在过去的第一个项目中,有人必须亲手完成.此外,对于Windows EXE格式,Microsoft必须有人编写第一个生成格式的工具以及Windows本身读取它然后执行它的方式.

windows executable exe machine-code

37
推荐指数
4
解决办法
3万
查看次数

通过互联网进行Android P2P(直接连接)(NAT后面)

我正在开始一个小型项目,基本上是经典战舰游戏的多人游戏(与超过两个玩家一样).

在我深入编码之前,我试图解决的一个问题是多个玩家之间的沟通问题.当前的可能性是使用中央HTTP服务器作为通信的中央集线器(与Android C2DM API结合以允许从HTTP服务器到设备的推送通信).这似乎是一个很好的解决方案,因为从理论上讲,只要您可以访问Internet,它就应该可以正常工作,无论您是否支持NAT.

然而,所提出的解决方案具有存在单个故障点/额外负载(网络服务器)的缺点.所以我想尝试其他选择.我想过在客户端之间使用套接字建立直接连接(网络服务器只是用作初始会合点),但是这只有在所有设备都在同一网络中时才能正常工作.考虑到今天我们几乎总是落后于路由器的NAT,我怎样才能实现直接通信?我一直在阅读有关打孔的内容,但我找不到任何有良好记录的好文库(包含很好的使用示例),并且肯定适用于Android.大多数(如果不是全部)打孔技术(STUN,ICE等等)广泛可用只能与UDP一起使用,这对于音频/视频以及可能丢失一些消息的实时多人游戏来说很好,但对于多人转向基于游戏,保证每个回合数据的传递非常重要(这是不可能直接用UDP进行的).

那么任何想法如何在NAT后面的Android设备之间实现可靠的打孔(最好通过TCP)?它不必在100%的情况下工作(可能不支持某些陌生人的NAT),但如果它适用于大多数情况则会很好.

sockets connection android p2p

19
推荐指数
1
解决办法
2万
查看次数

Gstreamer - 将命令行gst-launch转换为C代码

我一直在使用gst-launch实用程序对GStreamer进行一些实验.但是,最终目标是使用GStreamer库在我自己的应用程序上实现相同的功能.

问题是,最终很难(至少对于那些不习惯使用GStreamer API的人来说)将我在命令行上测试的内容"移植"到C/C++代码.

我可能需要移植的命令示例如下:

gst-launch filesrc location="CLIP8.mp4" ! decodebin2 ! jpegenc ! multifilesink location="test%d.jpg"
Run Code Online (Sandbox Code Playgroud)

什么是最"直接"的方式/方法来获取这样的命令并在我自己的应用程序上用C语言编写它.

另外,作为一个附带问题,我怎么能用在内存上做这项工作的可能性替换multifilesink(我正在使用OpenCV对应该从视频中提取的给定图像执行一些计算).是否可以直接解码到内存并立即使用它而无需先保存到文件系统?它可以(并且应该)是顺序的,我的意思是在我完成处理当前帧之后只会继续到下一帧,这样我就不必在内存中保留数千帧.

你说什么?

c c++ opencv extract gstreamer

8
推荐指数
1
解决办法
7189
查看次数

C++目录监视 - 如何检测副本已结束

我有一个复制文件的文件夹.我想在将文件复制到目录后立即查看并处理文件.我可以检测文件何时在目录中,是通过轮询(我当前的实现)还是在某些测试中使用Windows API从我在网上找到的一些样本中检测到的.

问题是我检测到文件首次创建时仍然被复制.这使我的程序需要通过错误访问该文件(因为该文件尚未完成).如何在复制开始时复制到复制结束时如何检测?我在Windows上使用C++,所以答案可能取决于平台,但如果可能的话,我更喜欢它与平台无关.

c++ windows directory visual-c++

7
推荐指数
1
解决办法
1992
查看次数

JavaFX WebView禁用相同的源策略(允许跨域请求)

我正在开发一个主要是美化网页的JavaFX应用程序.它是一个桌面应用程序(它没有嵌入到网页中),它有一个主UI的Web视图.应用程序本身仅用于使用Bluecove访问蓝牙设备,因为在Web浏览器上无法直接使用JavaScript.

概念验证工作正常(我能够从Java调用JavaScript代码,反之亦然)但我有一个额外的要求,即从JavaScript中调用任意Web服务/ API,但这违反了相同的原始策略(在Android上类似于此) :允许在Android Webview + jquery mobile中进行远程ajax调用.这可能在JavaFX上吗?有小费吗?

PS:我正在使用JavaFX 2.2.

javascript javafx cross-domain same-origin-policy

7
推荐指数
2
解决办法
3367
查看次数

Doctrine postSave,postUpdate和Internationalization(检测修改)

我正在开发一个在我正在开发的Symfony 1.4项目中使用i18n行为的表有一点问题.例如,在YAML上定义的以下模型(我有其他遵循相同模式的模型):

Subject:
  actAs:
    Timestampable: ~
    I18n:
      fields: [name]
  columns:
    name: { type: string(255), notnull: true }
  relations:
    Publications:
      class: Publication
      refClass: PublicationSubject
      local: subject_id
      foreign: publication_id
Run Code Online (Sandbox Code Playgroud)

我只有国际化的名称字段,但在保存时(在更改表单上的一种语言之后),postUpdate($ event)方法不会被触发.我想,我可以使用postSave($ event)方法并检查它是否被修改但它也总是返回false.那么如何检测国际化学说模型是否被修改?

提前致谢 ;)

php doctrine symfony1 internationalization

5
推荐指数
1
解决办法
2592
查看次数