标签: native

如何确定DLL是托管程序集还是本机(防止加载本机DLL)?

原标题:如何防止从.NET应用程序加载本机dll?

背景:

我的C#应用​​程序包括一个插件框架和通用插件加载器.

插件加载器枚举应用程序目录以识别插件dll(实质上它此时搜索*.dll).

在同一个应用程序目录中是一个本机(Windows,非.NET)dll,间接地,其中一个插件dll依赖于它.

插件加载器盲目地假设native.dll是.NET程序集dll,只是因为它只检查文件扩展名.当它尝试加载本机dll时,抛出异常:

"无法加载文件或程序集'native.dll'或其依赖项之一.模块应该包含程序集清单."

如果插件加载失败,我基本上创建了一个诊断报告,所以我试图避免让这个日志充满关于无法加载本机dll的消息(我甚至不想尝试).

问题:

是否有一些.NET API调用可用于确定二进制文件是否恰好是.NET程序集,以便我根本不尝试加载本机DLL?

也许从长远来看,我会将我的插件移动到一个子目录,但是现在,我只想要一个解决方案,不涉及在我的插件加载器中硬编码"native.dll"名称.

我想我正在寻找某种静态的Assembly.IsManaged()API调用,我忽略了......大概没有这样的API存在?

c# dll plugins assemblies native

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

处理时托管资源和本机资源有什么区别?(.净)

我正在阅读有关如何实现IDisposableMSDN文章,我不确定文章中引用的托管和本机资源之间的区别.

我有一个类在处理时必须处理它的两个字段.我应该将它们视为托管(仅在处置= true时处置)或本机资源吗?

.net resources idisposable native

25
推荐指数
2
解决办法
8602
查看次数

使用Oreo(8.1)在开发人员控制台中中止本机崩溃

在开发人员控制台中,我在中止时遇到越来越多的本机崩溃.这只发生在Android 8.1设备上!有人知道回归吗?这是回溯:

   #00  pc 000000000001da4c  /system/lib64/libc.so (abort+112)
   #01  pc 0000000000007f7c  /system/lib64/liblog.so (__android_log_assert+312) 
   #02  pc 000000000006cff8  /system/lib64/libhwui.so (android::uirenderer::renderthread::EglManager::createSurface(ANativeWindow*, bool)+324) 
   #03  pc 000000000006ad14  /system/lib64/libhwui.so (android::uirenderer::renderthread::OpenGLPipeline::setSurface(android::Surface*, android::uirenderer::renderthread::SwapBehavior, android::uirenderer::renderthread::ColorMode)+72) 
   #04  pc 00000000000679ec  /system/lib64/libhwui.so (android::uirenderer::renderthread::CanvasContext::setSurface(android::Surface*)+144) 
   #05  pc 00000000000703bc  /system/lib64/libhwui.so (android::uirenderer::renderthread::Bridge_initialize(android::uirenderer::renderthread::initializeArgs*)+16) 
   #06  pc 00000000000726c4  /system/lib64/libhwui.so (android::uirenderer::renderthread::MethodInvokeRenderTask::run()+24) 
   #07  pc 00000000000738d8  /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+336) 
   #08  pc 0000000000011504  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+264) 
   #09  pc 00000000000a9830  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140) 
   #10  pc 0000000000069c94  /system/lib64/libc.so (__pthread_start(void*)+36) 
   #11  pc 000000000001eeec  /system/lib64/libc.so (__start_thread+68)
Run Code Online (Sandbox Code Playgroud)

更新:我想这个问题只能由Google自己解决:(此处跟踪问题https://issuetracker.google.com/issues/70259031
与此同时,有人可能已经重现此问题或至少解释问题何时发生?这有助于找到解决方法!

android native

25
推荐指数
1
解决办法
4023
查看次数

将V8对象转换为指针

我正在编写一个Node应用程序(在TS中),需要与一些本机库连接.

我有一个库(用C语言编写) - 让我们认为它是一个黑盒子 - 而且我正在使用NAN编写一个包装器.库本机接口可以简化为以下功能:

typedef void (*got_message_reply_cb)(context ctx, void * priv, struct X * the_reply);

context lib_connect();
bool lib_send_message(context ctx, message msg, got_message_reply_cb callback, void * priv);
Run Code Online (Sandbox Code Playgroud)

我相信这很容易理解.

所以,我试图将这个黑盒子本机库包装成:

class TheLibrary : public Nan::ObjectWrap {
    Initialize(v8::Handle<v8::Object> target);
    SendMessage(...)
}
Run Code Online (Sandbox Code Playgroud)

然后到javascript对象,如:

class TheLibrary {
    SendMessage(message: whatever, callback: (reply) => void); // or return promise, doesn't matter
}
Run Code Online (Sandbox Code Playgroud)

如何在NAN C++模块中实际处理回调?我需要以某种方式传递回调(可能由Local<Function>- 表示,如果我理解正确,范围有限)作为指向函数的指针,然后将其检索回来.怎么做?谢谢你的回复.

c++ native node.js

25
推荐指数
1
解决办法
651
查看次数

你如何制作linux GUI?

我的主要经验是使用C && C++,所以我更愿意和他们在一起.我不想使用像QT,GTK或wxWidgets或任何工具包那样的东西.我想学习本土编程,这种目的无法实现.考虑到这一点,我也想避免使用Java.

我理解gnome和xfce以及KDE等都是Linux的桌面环境,安装的基础通常是X(Xorg).在为Linux编码时,您是为X编码还是为桌面环境编写代码?对于Linux,是否有一个标准的Linux头文件(如win32有windows.h)?或者是每种桌面环境的不同编码方法?

任何帮助是极大的赞赏.

c c++ linux native

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

JPA 2.0本机查询结果为map

我运行JPA 2.0本机查询,如下所示:

Query query = em.createNativeQuery("SELECT NAME, SURNAME, AGE FROM PERSON");
List list = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

现在list拥有查询返回的所有行.我可以迭代它们,但每个条目都在Object[]哪里:

  • 在索引0我找到了NAME
  • 在索引1处,我找到了SURNAME
  • 在索引3我找到了AGE

有没有人找到办法做这样的事情:

Map<String, Object> row = list.get(index);
String name = row.get("NAME");
String surname = row.get("SURNAME");
Integer age = row.get("AGE");
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为我执行的本机查询是动态的,我不知道SELECT子句中字段的顺序,所以我不知道id的查询将如下所示:

SELECT SURNAME, NAME, AGE FROM PERSON
Run Code Online (Sandbox Code Playgroud)

要么

SELECT AGE, NAME, SURNAME FROM PERSON
Run Code Online (Sandbox Code Playgroud)

甚至

SELECT AGE, SURNAME, NAME FROM PERSON
Run Code Online (Sandbox Code Playgroud)

jpa native

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

如何为React Native生成文档?

我测试了Doxygen和多个GitHub项目(jsdoc,react-docgen,react-doc-generator使用npm i -g如下:

react-doc-generator ./ -o DOCUMENTATION.md
react-docgen --pretty -o out/reactdocgen.html ./
jsdoc ./src
doxywizard
Run Code Online (Sandbox Code Playgroud)

但没有人真正理解最近的ES6 JavaScript和JSX for React Native(甚至没有提到本机代码).我最终得到了无用的文档.

当然,我试图添加注释(和don的\ fn),但是注释完全由手工输入(未生成),有时文档中的代码不存在.

/**
 * 
 * 
 * @class MainScreen
 * @extends {Component}
 */
class MainScreen extends Component {
    /**
     * 
     * \fn navigationOptions()
     * @static
     * @memberof MainScreen
     */
Run Code Online (Sandbox Code Playgroud)

最后我没有找到jsdoc文件夹和子文件夹的方法(但是评论文件的测试结果是subpar).

所以我转向React Native文档大师问:如何为React Native生成文档?

如果仅来自评论,您是否有工具从RN + ES6(+ Native)代码生成注释?

加分点:例如,我们可以自动从导入语句中获取图表吗?喜欢: APP-图

javascript diagram native documentation-generation react-native

23
推荐指数
1
解决办法
3041
查看次数

如何重命名DLL但仍然允许EXE找到它?

我们有一个内部生成的DLL,我们有相关的存根LIB.

我们还有一个EXE,它使用这个DLL使用静态链接到DLL的LIB文件的简单方法(即,不是手动使用LoadLibrary).

当我们部署EXE时,我们希望为了混淆原因(根据客户的要求)更改DLL文件名.

我们怎么能这样做,以便我们的EXE仍然自动找到DLL?

我已经尝试重命名DLL和LIB文件(在它们构建为正常名称后),然后将EXE项目设置更改为与重命名的LIB链接.这在运行时失败,因为我猜DLL的名称被烘焙到LIB文件中,而不是简单地通过链接器猜测".lib"替换为".dll".

一般情况下,我们不希望将此混淆应用于DLL的所有用途,因此我们希望保留当前DLL项目输出文件.

我希望有一种方法可以编辑DLL的LIB文件,并用其他东西替换DLL文件的硬编码名称.在这种情况下,这可以完全在EXE项目中完成(可能作为预构建步骤).


更新:我发现延迟加载不起作用,因为我的DLL包含导出的C++类.看到这篇文章.

还有其他选择吗?

windows dll native

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

我可以使用MongoDB替代iOS上的CoreData吗?

我刚刚开始阅读MongoDB和CouchDB等NoSQL技术.我很想知道我是否可以使用MongoDB或任何NoSQL技术来替代核心数据应用程序.

核心数据应用程序可能需要很长时间才能学习和实现,特别是如果您的应用程序很复杂并且您只想进行一些简单的添加,编辑,删除和查询(CRUD内容).

因为它看起来像JSON,看起来它可以运行得非常快; 我对NoSQL over Core Data的实现很感兴趣.

我可以将MongoDB作为本机运行吗?我做了一些谷歌搜索,但我真的无法得到我追求的具体答案.

如:

我不确定iphone在iphone平台上的优势是什么,是否支持,如果我提交一个带有NoSQL的应用程序,苹果团队会否认它吗?

谢谢

iphone couchdb native core-data mongodb

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

PokèmonGo如何使用Google Map API使用自定义Google地图?

我无法在Google API文档的任何位置找到其地图可以自定义(我知道它只能在网上自定义),但可以在PokèmonGo应用上看到它使用Google API来显示自定义地图.

PokèmonGo的参考使用谷歌地图:https://www.reddit.com/r/pokemongo/comments/4s71t1/suggestion_download_city_map_as_a_way_to_decrease/

任何人都能找到这种方法吗?

自定义地图我的意思是下面的地图,绿色和蓝天: 在此输入图像描述

android google-maps native google-api ios

22
推荐指数
2
解决办法
6427
查看次数