gpt4 book ai didi

c# - 如何在 dll 中创建可以通过运行它的应用程序更改的条件

转载 作者:行者123 更新时间:2023-11-28 04:29:19 24 4
gpt4 key购买 nike

我的问题很简单,我有一个用 C++ 编写的 dll,我从 C# 程序调用它。我的问题是我是否可以在 c# 程序中有一个变量,该变量可以在用 C++ 编写的 dll 中使用,并在更改变量时更改程序内部的条件。例如:


C#:

int z = 0;  //variable which i want to know if it can be used inside the dll.
[DllImport("C:\\Users\\example\libtest.dll")] //path to the dll
public static extern void libtest(int x); //

C++:

#include "C:\\Users\\app.cpp"   //path to the actual program
#include "C:\\Users\\Header.h" //^^

extern "C" __declspec(dllexport) void libtest(int x) {

myClass libtestx(x);
}

C++( header .h):

#pragma once

class myClass
{
public:
myClass(int x);
private:
//bool z;
};

C++(应用程序.cpp):

void dosomething():
//some method to do something
while(z == 0){ //heres my question, can a var (z) inside the c# program set the conditions?
//do something
}
myClass::myClass(int x) {
if (x == 1) {
dosomething();
}
else if (x == 0) {
//do nothing
}

}

请注意,我刚刚开始学习这两种语言,我一直在学习和写作的所有内容都是通过提问和在线阅读来学习的,如果我听起来很愚蠢或我的代码很垃圾,我深表歉意。我非常感谢有关我的问题的任何帮助或任何可以帮助我改进的提示。再次感谢。

最佳答案

否(对你的方法)

让我们暂时忽略语言的差异;图书馆的全部意义在于可以在不同的消费者(程序)之间重复使用。因此,库知道使用它的应用程序的一些细节(如变量)完全违背了目的。

此外,它会产生循环依赖,没有编译器会这样做。

是(应用程序可以改变库对象状态)

程序总是这样做,但它们是通过从库中创建适当的对象并调用它们的方法(或改变状态等)来实现的。假设 myClass 有一个方法 setZ 设置它的 local z 变量并且从正在运行的应用程序调用(它甚至可以使用其(程序)z 变量的值!)然后对 myClass 的后续调用将使用该更新后的值。

总的来说,这似乎是对 OOP 基础知识的重新审视,以及库的用途可能是有序的。

关于c# - 如何在 dll 中创建可以通过运行它的应用程序更改的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com