我的问题很简单,我有一个用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 ++(app.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
}
}
请注意,我刚刚开始学习这两种语言,并且通过问问题和在线阅读而学习了所学的东西,所以对不起,如果我听起来很愚蠢或我的代码很垃圾。对于有关我的问题的任何帮助或可以帮助我改善的提示,我将非常感谢。再次感谢。
答案 0 :(得分:1)
让我们暂时忽略语言上的差异;库的重点是可以在不同的使用者(程序)之间重用。因此,知道使用它的应用程序的某些细节(如变量)的库完全无法达到目的。
此外,它创建了循环依赖关系,没有编译器会这样做。
程序总是 这样做,但是它们是通过从库中创建适当的对象并对其调用方法(或改变状态等)来实现的。假设myClass
有一个方法setZ
设置了它的 local z
变量,并从正在运行的应用程序中调用了该方法(它甚至可以使用其(程序)z
变量!)随后对myClass
的调用将使用该更新后的值。
总的来说,这似乎是对OOP基础的重新审视,并且可能有针对性的库。