小编Mic*_*ael的帖子

如何知道我是在 .NET Framework 还是 .NET Core 下运行

假设我有一个 Nuget 库,它编译为netstandard2.0支持netcoreapp2.1net471.

现在,在编译时,我不知道我是否在net471netcoreapp2.1或下运行(我强调这一点是因为我不能将我的 dll 编译为 和netstandard2.0netstandard因为net471如果调用程序集netstandard2.0,我仍然不知道什么关于入口组件)。

我如何在运行时知道我正在运行哪个 TargetFramwork?


我知道有一个这样的解决方案:

Assembly.GetEntryAssembly()?
    .GetCustomAttribute<TargetFrameworkAttribute>()?
    .FrameworkName
Run Code Online (Sandbox Code Playgroud)

但是,如果您在 MSTest 和 中运行此net471命令Assembly.GetEntryAssembly() == null,那么我不想破坏使用我的 Nuget 的项目中的测试。

c# .net-assembly .net-core

9
推荐指数
1
解决办法
3329
查看次数

带有opencv的H264视频编解码器

我正在尝试使用opencv创建一个电影,我需要输出文件是H264格式.

我在opencv中使用了以下fourcc,但是我收到的错误是没有安装合适的编解码器.

fourcc=CV_FOURCC('H','2','6','4') ;
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,我收到以下错误消息:

Could not find encoder for codec id 28: Encoder not found
Run Code Online (Sandbox Code Playgroud)

我需要什么才能在OpenCV中使用此编解码器?

c++ opencv h.264 fourcc

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

c切换和跳转表

据我所知,c/c ++中的switch语句有时会编译为跳转表.我的问题是,有没有拇指规则可以保证?

在我的情况下,我正在做这样的事情:

enum myenum{
MY_CASE0= 0,
MY_CASE0= 1, 
.
.
.
};

switch(foo)
{
  case MY_CASE0:
  //do stuff
  break;
  case MY_CASE1:
  //do stuff
  break;
 .
 .
 .
}
Run Code Online (Sandbox Code Playgroud)

我按顺序覆盖从1到n的所有情况.可以安全地假设它会编译成跳转表吗?原始代码是一个冗长而混乱的if else陈述,所以至少我获得了一些可读性.

c++ switch-statement jump-table

8
推荐指数
2
解决办法
6366
查看次数

C函数语法

在此页面上:http://www.scs.stanford.edu/histar/src/pkg/uclibc/libc/sysdeps/linux/x86_64/sigaction.c

我看到这两行:

extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
extern void restore (void) asm ("__restore") attribute_hidden;
Run Code Online (Sandbox Code Playgroud)

这是什么语法?它是否设置restore_rt为具有内联作用的函数asm("__restore_rt")

谢谢!

assembly glibc

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

是否正确使用Parcelable在应用程序之间发送数据?

我试图了解如何在Android中的应用程序之间进行通信 - 而不仅仅是在Activity实例之间.

我建立了一个"客户端",它将一个Messenger obj发送给一个服务(在Intent发送到服务中); 该服务创建一个Messageobj并使用它将其发送回'client' messenger.send(message).这工作正常,直到我尝试使用Message.obj来保存对象.

我在服务中创建了自己的ParcelableMyParcelable并将其放入消息中.一切都有效,直到消息在"客户端"中被解组.unmarshall失败,因为'客户'无法访问MyParcelable该类.这是显而易见的-他们是在不同的包(说com.whatever.myclientcom.whatever.myserver).这完全是错误的方法吗?

我也尝试过创建Parcel并发送(两个应用程序都可以访问该类) - 但事实Parcel并非如此Parcelable.我已经阅读过关于正在使用的类加载器,但是不了解单独的应用程序中的单独的类加载器(进程,如果我在这方面理解Android架构).也就是说,如何对一个类加载器"教授"另一个类加载器中存在的类?当然看起来应该有一个明显的"这就是你如何做到",但我还没有看到它.

android marshalling unmarshalling parcelable multiple-processes

6
推荐指数
1
解决办法
2293
查看次数

FOR命令中的表达式(for(int i = 0; i <([arr count] -1); i ++){})

我有一个我无法理解的问题

NSArray *emptyArr = @[];
for (int i=0; i < ([emptyArr count]-1) ; i++) {
    NSLog(@"Did run for1");
}
Run Code Online (Sandbox Code Playgroud)

[emptyArr count]- 1是-1但我的应用程序仍然运行NSLog命令!

如果我使用int变量:

NSArray *emptyArr = @[];
int count = [emptyArr count]-1;
for (int i=0; i < count ; i++) {
    NSLog(@"Did run for1");
}
Run Code Online (Sandbox Code Playgroud)

然后我的应用程序不运行NSLog命令.

有人帮我请!

objective-c ios

6
推荐指数
1
解决办法
1497
查看次数

为什么使用ROL指令?

我对汇编语言编程有些陌生,所以请原谅我这个问题似乎无关紧要.我试图了解一个32位的添加程序,以下是用于将添加结果(保存在EAX中)显示回控制台的过程之一

;Procedure to display EAX as a 8 digit hex number

DISPH PROC NEAR

   PUSH EBX        ; Save EBX
   MOV CL,4        ; To rotate the register by 4 bits
   MOV SI,8        ; Count for displaying 8 digits

DISPH1:

   ROL EAX,CL      ; Rotate EAX left by 4 bits
   PUSH EAX        ; Save EAX
   AND AL,0FH
   ADD AL,30H
   CMP AL,'9'      ; if AL <= '9', AL contains the ASCII code
   JBE DISPH2       
   ADD AL,7        ; if AL > '9' , add 07H …
Run Code Online (Sandbox Code Playgroud)

x86 assembly

6
推荐指数
2
解决办法
8650
查看次数

如何正确加载程序集

我开发了一个带插件的系统,它在运行时加载程序集.我有一个通用的接口库,我在服务器和它的插件之间共享.但是,当我执行LoadFrom for plugin文件夹并尝试查找实现公共接口的所有类型时,IServerModule我得到运行时异常:

"ServerCore.IServerModule"类型存在于"ServerCore.dll"和"ServerCore.dll"中

我加载这样的插件:

foreach (var dll in dlls)
{
            var assembly = Assembly.LoadFrom(dll);
            var modules = assembly.GetExportedTypes().Where(
                type => (typeof (IServerModule)).IsAssignableFrom(type)
                && !type.IsAbstract &&
                !type.IsGenericTypeDefinition)
                .Select(type => (IServerModule)Activator.CreateInstance(type));
            result.AddRange(modules);
}
Run Code Online (Sandbox Code Playgroud)

我该如何处理这个麻烦?

我会感激任何帮助

.net c# reflection .net-assembly

6
推荐指数
1
解决办法
388
查看次数

可以在gradle中为每个ABI设置cmake参数吗?

我有一个带有基于cmake的构建脚本的跨平台库.由于现在可以使用cmake对android的支持(https://developer.android.com/studio/projects/add-native-code.html),我计划将ndk-build makefile移到垃圾箱.
我已经测试过find_package(ZLIB REQUIRED) 并且运行良好,因为zlib头文件库本身可用于NDK sysroot中的所有ABI.所以,我可以为每个flavor或build类型的cmake cmdline添加任何自定义参数:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        externalNativeBuild {
            cmake {
                arguments "-DMYLIB_ENABLE_PROGUARD=ON"
            }
        }
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        externalNativeBuild {
            cmake {
                arguments "-DMYLIB_ENABLE_PROGUARD=OFF"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是能够设置CMAKE_PREFIX_PATH每个ABI以通过FindPackage查找外部静态/共享库.

一般来说,我可以find_library和cmake脚本本身include_directories一起使用${ANDROID_ABI},但是我已经有了多平台支持的工作脚本,我不想添加脏代码,因为有干净的方式(find_package + CMAKE_PREFIX_PATH).

谢谢大家的时间!

android cmake gradle android-ndk

6
推荐指数
1
解决办法
1666
查看次数

Play 商店控制台上出现“android.app.RemoteServiceException”崩溃

我在 Play 商店控制台上收到以下崩溃报告:

android.app.RemoteServiceException: 
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2240)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8512)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Run Code Online (Sandbox Code Playgroud)

此崩溃主要发生在 Android 11 以及 Google Pixel 和 Samsung 设备上。我在互联网上搜索过,但没有找到有关此问题的帮助。

service android

6
推荐指数
0
解决办法
100
查看次数