我正在使用MinGW + MSYS,
我添加了额外的包括dirs,extra-lib-dirs,但似乎没有任何帮助cabal找到pcre库.以下是我尝试过的一些命令行,以及它下面的一些示例输出.
cabal install pcre-light --extra-include-dirs='C:\Program Files (x86)\GnuWin32\include' --extra-lib-dirs='C:\Program Files (x86)\GnuWin32\lib'
cabal install pcre-light --extra-include-dirs='/C/Program Files (x86)/GnuWin32/include' --extra-lib-dirs='/C/Program Files (x86)/GnuWin32/lib'
cabal install pcre-light --extra-include-dirs="/C/Program Files (x86)/GnuWin32/include" --extra-lib-dirs="/C/Program Files (x86)/GnuWin32/lib"
Run Code Online (Sandbox Code Playgroud)
我一直在这方面得到一些东西:
Resolving dependencies...
Notice: installing into a sandbox located at C:\Users\user\src\DBSite\dbsite\.cabal-sandbox
Configuring pcre-light-0.4.0.3...
Failed to install pcre-light-0.4.0.3
Last 10 lines of the build log ( C:\Users\user\src\DBSite\dbsite\.cabal-sandbox\logs\pcre-light-0.4.0.3.log ):
[1 of 1] Compiling Main ( C:\Users\user\AppData\Local\Temp\pcre-light-0.4.0.3-9072\pcre-light-0.4.0.3\dist\dist-sandbox-6710ae14\setup\setup.hs, C:\Users\user\AppData\Local\Temp\pcre-light-0.4.0.3-9072\pcre-light-0.4.0.3\dist\dist-sandbox-6710ae14\setup\Main.o )
Linking C:\Users\user\AppData\Local\Temp\pcre-light-0.4.0.3-9072\pcre-light-0.4.0.3\dist/dist-sandbox-6710ae14\setup\setup.exe ...
Configuring pcre-light-0.4.0.3...
setup.exe: Missing dependency on a foreign library:
* …Run Code Online (Sandbox Code Playgroud) 我的代码看起来有点像这样,但这是一个简化版本:
A类:
public class A{
public void testArgs(A a){
System.out.println("A");
}
public void test(){
System.out.println("A");
}
}
Run Code Online (Sandbox Code Playgroud)
B级:
public class B extends A{
public void testArgs(B a){
System.out.println("B");
}
public void test(){
System.out.println("B");
}
}
Run Code Online (Sandbox Code Playgroud)
主要:
public class Main{
public static void main(String[] args){
a(new B()).testArgs(new B()); // prints A
(new B()).testArgs(new B()); // prints B
a(new B()).test(); // prints B
}
public static A a(B b){
return b;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么a(new B()).testArgs(new B())打印A不是B?是否有某种方法来解决/修复此问题?
编辑:
澄清:
我真正想要的是使用A调用时运行的超类方法,以及使用B调用testArgs时要运行的子类方法.
铸造也不是一种选择,因为在实际的代码,这里不像,我不知道这个方法调用的结果是否实际上是B或没有. …