问题标签 [runtimemodification]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 调用 dll 函数而不在 main 中调用
我想知道我们如何调用在外部静态类(dll 文件)中定义的函数,而不在 main 中调用它。
为了让事情更清楚,考虑一个 exe 文件,它的代码没有公开,我们不能对它做任何修改,现在我想用我的 dll 文件中定义的某些测试用例来测试一个 exe 文件,调用该函数必须在 exe 文件的 main() 函数中创建。但如前所述,我无权修改 exe 文件的代码。现在如何在需要的执行点调用这个 dll 函数,而无需使用 Visual Studio 调用它。
我想调用一个函数而不向主函数添加任何行。
为了让事情更清楚,我只想添加一些示例
linux - 如何打开包含 Linux 中任何系统调用实现的 .c 文件?
我的动机是打开定义,即头文件的(.c
)文件shm.h
,但是在遵循大量建议并经历了很多之后,我仍然无法在Linux中获得它的确切位置。当我打开头文件时,它说它的定义是在 XP4.2 中定义的,但我无法弄清楚。
angular - Angular - 如何为 mat-tab 中的不同选项卡创建单独的“ViewContainerRef”容器
我通过将html数据和函数绑定到它来创建具有动态组件的运行时组件模块,我从api调用中获取它作为字符串数据。然后将新生成的组件加载到我的容器中,放置在选项卡中,因为我正在根据数据动态创建选项卡。该过程适用于第一个选项卡,但不适用于其他选项卡。
这可能意味着,我推送运行时组件的容器只生成一次,因此不会反映其他选项卡。
HTML:
零件:
java - Java - 在运行时重定位引用
所以首先我知道你可以用不同的构建系统上的各种影子插件重新定位你编译的 jar 的所有引用。我知道它是如何工作的,并且已经在使用它。但是我遇到了一个问题,我在编译时无法做到这一点。
我将简化我的情况,以便更容易理解(但我会在底部解释全图,以防你好奇)。
我正在为两个不同(但相似)的系统(一个 jar forall)编写一个插件。这些平台负责启动底层软件和加载/启动所有插件(所以我无法控制应用程序,包括启动参数)。
平台A
为我提供了一个库(我们称之为com.example.lib
)。平台也是如此B
。但它决定将其搬迁到org.b.shadow.com.example.lib
.
现在在我的插件的核心代码(两个平台上使用的代码)中,我使用了这个库。现在虽然我可以检测到我在哪个平台上,但我目前不知道如何在运行时重写我的代码中对库的所有引用,以便它在平台上工作B
。
从我发现的情况来看,我似乎需要使用自定义ClassLoader
来实现这一点。这里的问题是我不知道我可以让运行时使用我的 custom ClassLoader
。或者真正从哪里开始。
一件重要的事情是,这些重定位可能只会影响我的包中的类中的引用(me.brainstone.project
例如)。
我使用的另一个依赖项(并且有阴影)使用 ASM 和 ASM Commons,所以如果可以使用这些依赖项,那就太棒了!
所以总结一下。我想在运行时仅在我的类中选择性地重新定位引用(对其他类)。
编辑:
虽然在我的整个(原始)帖子中,我只谈论过一个库,但我想指出我将为多个库执行此操作。并且在那里做需要我付出巨大努力的事情(为每个库(类或部分)编写包装器将被视为一项重大努力)允许我使用库并不是我想要的。相反,我想要一个解决方案,该解决方案需要最少的插件来将新库添加到组合中。
现在这里是对我的设置的更详细的解释。
拳头我想先说一下我知道我可以为不同的平台创建两个不同的罐子。我已经在这样做了。但是由于令人惊讶的是,许多人似乎无法弄清楚这一点,而且我已经厌倦了一遍又一遍地解释它(那些人不会阅读文档来挽救他们的生命)我只想提供一个两个都用一个罐子,即使这意味着我需要花费大量时间来让它工作(我更喜欢这个而不是不断地解释它)。
现在我的实际设置如下所示:在平台A
上提供了库,但在平台上B
不是。我知道其他插件经常通过遮蔽它来使用该库(许多没有重新定位导致各种问题)。因此,为了防止任何冲突,我下载了库,使用jar-relocator重新定位该 jar 中的类,然后使用反射将其注入到类路径中。在这种情况下,如果重新定位,我目前无法使用该库。这就是为什么我想在运行时更改代码中的引用。它也解释了为什么我不想更改其他类的引用,因为我不想意外破坏那些其他插件。我也认为,如果我能以某种方式使用我自己的ClassLoader
,我不会'ClassLoader
ClassLoader
但正如我所说,据我了解,问题与简化版本相同。