我正在尝试熟悉JNI API,但无法获得要编译的示例c ++程序.
这是我用来编译的命令,下面是我正在尝试编译的程序.我得到的错误是:
/tmp/cczyqqyL.o: In function `main':
/home/nc/Desktop/jni/simple/ctojava/callJava.cpp:16: undefined reference to `JNI_CreateJavaVM'
Run Code Online (Sandbox Code Playgroud)
编译:
g++ -g -I/usr/lib/jvm/java-7-oracle/include/ -I/usr/lib/jvm/java-7-oracle/include/linux/ -L/usr/bin/java -L/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/ -ljvm callJava.cpp
Run Code Online (Sandbox Code Playgroud)
C++:
#include <jni.h> /* where everything is defined */
int main(){
JavaVM *jvm; /* denotes a Java VM */
JNIEnv *env; /* pointer to native method interface */
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=/home/nc/Desktop/jni/simple/ctojava/";
vm_args.version = JNI_VERSION_1_6;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_FALSE;
/* Create the Java VM */
int res = JNI_CreateJavaVM(&jvm, (void …Run Code Online (Sandbox Code Playgroud) 我正在尝试熟悉JNI API,但无法获得要编译的示例c ++程序.我得到了相同的样本来编译并在linux中运行(在下面的链接中发布问题后)但是无法在windows中编译它; 我正在使用mingw g ++.我已经将所有包含路径更改为Windows路径,并且jni.h位于编译时,而不是jvm.dll.
这是我尝试用来编译的命令:
g++ -g -I"C:\Program Files (x86)\Java\jdk1.7.0_21\include" -I"C:\Program Files (x86)\Java\jdk1.7.0_21\include\win32" -L"C:\Program Files (x86)\Java\jdk1.7.0_21\jre\bin\server" callJava.cpp -ljvm
Run Code Online (Sandbox Code Playgroud)
和...
**same as above with the additional** : -L"C:\Program Files (x86)\Java\jdk1.7.0_21\lib"
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
undefined reference to `_imp__JNI_CreateJavaVM@12'
Run Code Online (Sandbox Code Playgroud)
和正在编译的cpp:
#include <jni.h>
int main(){
//firstTest();
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=C:/Users/Ron/Dropbox/jni/simple/ctojava/win";
vm_args.version = JNI_VERSION_1_6;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_FALSE;
int res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args);
jclass cls = env->FindClass("Hello");
jmethodID mid = …Run Code Online (Sandbox Code Playgroud) 我正在玩使用Google语音文本API的脚本。该api需要flac编码的文件,因此脚本的记录部分如下所示:
arecord -q -t wav -d 0 -f S16_LE -r 16000 | flac - -f --best --sample-rate 16000 -s -o "$TEMP_FILE"
Run Code Online (Sandbox Code Playgroud)
该命令将一直记录,直到用户使用ctrl-c退出,并且应将wav记录的格式以flac格式通过管道传送到flac程序以输出,然后该脚本应继续。
我遇到的问题是,按ctrl-c会完全结束脚本,并切断某些音频(flac文件仍会输出)。如果我在不使用管道的情况下运行脚本:
arecord -q -t wav -d 0 -f S16_LE -r 16000 some.wav
Run Code Online (Sandbox Code Playgroud)
然后按ctrl-c只会结束录制,并继续执行脚本。
如何解决此问题,以便ctrl-c仅停止arecord命令并允许脚本的其余部分(包括管道flac编码)完成?
目前,我对Objective-c中的自定义委托流程感到有点沮丧.我已经使用过几次设计模式,对它的工作方式有了很好的理解.我在互联网上搜索了2个小时试图找到我在这种情况下做错了什么,并且没有占上风.我还比较了我过去使用的正常运行的自定义委托与此实例的比较,并且看不出任何概念上的差异.所以我们走了:
我正在制作一个自定义的双表视图(一个表用于列表,另一个用于保存从该列表中进行的选择.)以便用户可以进行基本选择.这是头文件:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@protocol ListSelectorViewDelegate
-(void) listTableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
-(void) selectTableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
-(void) listTableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
-(void) selectTableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
- (void)listTableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)selectTableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
@end
@protocol ListSelectorDataSource
-(UITableViewCell *)listTableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
-(UITableViewCell *)selectTableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
-(NSArray *)sectionIndexTitlesForListTableView:(UITableView *)tableView editStatus:(BOOL) status;
-(NSArray *)sectionIndexTitlesForSelectTableView:(UITableView *)tableView editStatus:(BOOL) status;
-(NSInteger)listTableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;
-(NSInteger)selectTableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;
@end
@interface ListSelectorViewController : UIViewController …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式创建一个uiPickerView并将其添加到视图中而不使用界面构建器.不要误会我的意思,我喜欢IB,但我想这样做的原因是因为我正在尝试构建一个对象,我可以使用UIPopoverViewController和各种不同的子视图快速插入以生成弹出菜单(例如uiPickerView)作为弹出窗口中的菜单.我已经通过在IB中构建菜单并使用其ViewController初始化弹出窗口来完成这项工作,所以我知道这在大多数情况下是如何工作的.
我已输入下面的相关代码,这是我运行时遇到的两个错误: - "无法找到映射图像UIPickerViewFrameRight-162-Popover.png" - "找不到映射图像UIPickerViewFrameLeft-162-Popover.png "
我不知道这些图像是什么,但我认为它们是选择器视图的png.
menu = [[UIPickerView alloc]initWithFrame:CGRectMake(0,100,162,162)];
menu.delegate = self;
menu.dataSource = self;
[menu reloadAllComponents];
[menu selectRow:0 inComponent:0 animated:YES];
//Add the picker to the view
[customViewController.view addSubview:menu];
popView = [[UIPopoverController alloc] initWithContentViewController:customViewController] ;
[popView setDelegate:self];
CGRect pos = [rootView frame];
[popView presentPopoverFromRect:CGRectMake(pos.origin.x,pos.origin.y,0,pos.size.height)
inView:displayView permittedArrowDirections:arrowDir animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在这个代码会崩溃程序,除非你删除我尝试将选择器添加到视图的行,此时我只得到空白的弹出窗口.所以我知道这是导致这个问题的选择器,但是我不知道如何修复它.我一整天都在搜索,但是每个关于uipickers的在线教程都包括使用IB.我的猜测是,这是一个非常愚蠢的错误,比如错过导入或者其他什么,但如果有人能告诉我我做错了什么,我将不胜感激.
另请注意,我按照教程了解如何为UIPickerView设置dataSource和委托方法,我很确定它们没问题但是如果你想在这里验证你是:再次感谢.
#import "PopUpMenuViewController.h"
@implementation PopUpMenuViewController
@synthesize menuType;
@synthesize data;
@synthesize popView;
@synthesize menu;
@synthesize customViewController;
#pragma mark -
#pragma mark UIPOPOVERCONTROLLER DELEGATE METHODS
#pragma mark -
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个bash脚本来操作从xsel传输的数据.
...
ary=()
while read data; do
echo $data
ary=( "${ary[@]}" "$data" )
done
Run Code Online (Sandbox Code Playgroud)
问题是我打电话时没有看到任何东西:
xsel | myscript.sh
Run Code Online (Sandbox Code Playgroud)
我试过了
echo "testing testing" | myscript.sh
Run Code Online (Sandbox Code Playgroud)
这确实有效,而且我也确保有来自xsel的东西
xsel | festival --tts --pipe
# will read the clipboard string piped from xsel aloud
Run Code Online (Sandbox Code Playgroud)
有什么建议?提前致谢