小编nuj*_*uju的帖子

在typedef结构上使用static

我在C中经常使用以下代码:

typedef struct
  {
  int member;
  } structname;
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将该结构定义保持为特定源文件的本地,因此没有其他源文件甚至知道结构存在.我尝试了以下方法:

static typedef struct
  {
  int member;
  } structname;
Run Code Online (Sandbox Code Playgroud)

但GCC因非法访问说明符而发牢骚.甚至可以将struct的声明保密为源文件吗?

c static struct typedef

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

JNI - 本机方法的UnsatisfiedLinkError

我正在运行Windows XP.显然JNI和UnsatisfiedLinkError齐头并进......我注意到大多数时候,链接器错误看起来像这样:

java.lang.UnsatisfiedLinkError: no whatever.dll in java.library.path
Run Code Online (Sandbox Code Playgroud)

但这不是我的问题; Java可以找到我的DLL.我收到一个错误,让我觉得我的方法命名错误:

java.lang.UnsatisfiedLinkError: NativeTest.nativemethod(lJava/lang/String;)Z
Run Code Online (Sandbox Code Playgroud)

我已经尝试在StackOverflow上查看类似的问题,就像这一个,这一个,这一个,这一个,这个,但这些方法都没有奏效.我也在Ubuntu论坛上找到了这个线程,它看起来像我遇到的完全相同的问题,但问题提问者没有说他们如何解决自己的问题(这真的很糟糕).所有谷歌搜索都给了我一个与java.library.path相同的错误.

这是我的实际代码.

NativeTest.java

class NativeTest
    {

    public static native boolean nativemethod (String arg);

    public static void main (String[] args)
        {
        System.out.println(nativemethod("0123456789"));
        System.out.println(nativemethod("012"));
        }

    static { System.loadLibrary("NativeTest"); }

    }
Run Code Online (Sandbox Code Playgroud)

NativeTest.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeTest */

#ifndef _Included_NativeTest
#define _Included_NativeTest
#ifdef __cplusplus
extern "C" …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface unsatisfiedlinkerror

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

以1ms为增量获得时间

x86中断0x1A似乎给出了计算机的时钟时间,但它只能给出55ms内的准确时间(AH = 0).有没有办法获得比这更小的增量(也许更"正常"),比如1ms?我正在尝试制作自己的玩具操作系统,所以我不能使用任何我无法自己编写的东西.

x86 assembly clock

5
推荐指数
2
解决办法
396
查看次数

简单的C音频库

我正在寻找一个简单的库来输出音频.我希望它符合这些标准:

  • 在LPGL/zlib/MIT或类似的东西下许可 - 我将在独立商业应用程序中使用它,我没有钱获得许可证.
  • 用C编写,但C++很好.
  • 跨平台(Windows,Linux,可能是OSX)
  • 能够在内存中读取某种音频文件(我更喜欢WAV或OGG,但我很乐意在需要时使用不那么流行的格式)(我已经看过使用memfile结构和用户定义的I/O回调).我需要将文件放在内存中,因为我将所有资源放入.zip存档,并使用另一个库将这些存档文件加载到内存中.
  • 支持同时播放多个声音,最多8个左右即可.
  • 我真的很想拥有源代码或静态库(MinGW/GCC lib???.a),但如果没有别的可用,我将使用共享库.

我必须在我的搜索中遇到二十多种不同的音频库,所有这些都不符合这些标准......

c audio wav static-libraries

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

禁用JPanel上的绘画

我试图在JFrame的一部分上完全禁用所有绘画和刷新.通过简单地覆盖,我在整个JFrame上获得了预期的效果public void paint(Graphics):

import javax.swing.*;

class Test extends JFrame {

  Test () {
    setBounds(20,20, 100,100);
    setVisible(true);
    }

  //This disables all painting and refreshing ON A JFRAME.
  //Just doing this on a JPanel doesn't work.
  public void paint (Graphics g) {}

  public static void main (String[] args)
    { new Test(); }

  }
Run Code Online (Sandbox Code Playgroud)

我想要同样的效果,但只能在JFrame的特定区域.我希望能够像帧的其余部分一样添加GUI组件.我已经尝试禁用双缓冲(使用JPanel的构造函数)并重写以下方法(扩展JPanel和JComponent),如下所示:

public class DontRefresh extends JComponent/JPanel {
  public void paint (Graphics g) {}
  public void paintComponent (Graphics g) {}
  public void repaint () {}
  public void update …
Run Code Online (Sandbox Code Playgroud)

java swing paint jcomponent jpanel

0
推荐指数
1
解决办法
1025
查看次数