作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题很简单,我有一个用 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/
我是一名优秀的程序员,十分优秀!